我知道早些时候可能会提出类似的问题。
我的代码的输出是数字的长度加上基于用户输入的一个:
即。如果用户键入“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();
答案 0 :(得分:2)
要在用户输入值之后设置firstNum
和sencondNum
,您必须从开头计算系列。但是,您可以在打印前简单地放置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();