作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
伙计们,我有一个关于斐波那契的问题。我如何获得斐波那契数列,该数字也将在用户输入时结束...例如,如果我输入 21,则输出必须为 0 1 1 2 3 5 8 13 21
这是我的代码
static void Main(string[] args)
{
int input, first = 0, second = 1, third = 0;
Console.Write("Enter a number : ");
n = Convert.ToInt32(Console.ReadLine());
Console.Write("First {0} Fibonacci numbers {1} {2} ", input, first, second);
for (int i = 3; i <= input; i++)
{
third = first + second;
Console.Write("{0} ", third);
first = second;
second = third;
}
}
最佳答案
您的错误之一在于循环逻辑。
如果用户输入 21,您希望斐波那契数最多为 21。您不需要前 21 个斐波那契数。
而不是
for (int i = 3; i <= input; i++)
{
////
}
做
while(second <= input)
{
////
}
我的回答几乎肯定有一个差一错误,但这应该为您指明正确的方向。
斐波那契数列经常用于技术面试问题,因为程序员在临时变量上挣扎,尤其是在压力下。没有它更容易:
不要有三个变量(first
、second
和third
)。相反,有一个变量:一个包含序列最后两个元素的数组:
int[] seq = new[] { 0, 1 };
然后,每次你想移动到下一个数字时:
while(seq[1] <= input)
{
Console.Write("{0}", seq[1]);
seq = new[] { seq[1], seq[0] + seq[1] };
}
关于c# - 如何在 C# 中获取斐波那契数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40966711/
我是一名优秀的程序员,十分优秀!