如何在C#中打印后续第n个Fibonacci系列?

时间:2016-03-20 17:37:40

标签: c# arrays fibonacci

我知道早些时候可能会提出类似的问题。

我的代码的输出是数字的长度加上基于用户输入的一个:

即。如果用户键入“5”,则为0,1,1,2,3,8。

但是,我试图在用户提供一些号码后打印后续的第n个数字。它应该是这样的:如果用户输入“5”,那么输出应该是5,8,13,21,34 ......

我应该如何修改我的代码来实现这一目标?

感谢您的帮助。

        Console.WriteLine("Please enter any nth number of the Fibonacci series.");

        string user_num = Console.ReadLine();

        int userNumber = int.Parse(user_num);

        int[] FibNum = new int[userNumber];

        int firstNum = 1;
        Console.Write("{0},", firstNum);

        int secondNum = 1;
        Console.Write("{0},", secondNum);

        int sumNum = 0;

        while (sumNum <= userNumber)
        {
            sumNum = (firstNum + secondNum);
            Console.Write("{0}, ", sumNum);

            firstNum = secondNum;
            secondNum = sumNum;               
        }

        Console.ReadLine(); 

1 个答案:

答案 0 :(得分:2)

要在用户输入值之后设置firstNumsencondNum,您必须从开头计算系列。但是,您可以在打印前简单地放置if以检查该值是否大于或等于用户输入,然后打印它。否则就忽略它。

 Console.WriteLine("Please enter any nth number of the Fibonacci series.");

    string user_num = Console.ReadLine();

    int userNumber = int.Parse(user_num);

    int[] FibNum = new int[userNumber];

    int firstNum = 1;
    int secondNum = 1;
  if(userNumber<=1){  
    Console.Write("{0},", firstNum);
    Console.Write("{0},", secondNum);
   }
    int sumNum = 0;

    while (sumNum <= userNumber)
    {
        sumNum = (firstNum + secondNum);
        if(sumNum>=userNumber)   //check to filter less values
        Console.Write("{0}, ", sumNum);

        firstNum = secondNum;
        secondNum = sumNum;               
    }

    Console.ReadLine();