如何在c#中获得斐波那契
发布时间:2020-12-15 23:36:28 所属栏目:百科 来源:网络整理
导读:伙计们我有关于斐波纳契的问题.如何获得斐波纳契数列,该数字也将以用户输入结束…例如,如果我输出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 n
伙计们我有关于斐波纳契的问题.如何获得斐波纳契数列,该数字也将以用户输入结束…例如,如果我输出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) { //// } 我的答案几乎肯定有一个一个一个错误,但这应该指向正确的方向. Fibonacci序列通常用于技术访谈问题,因为程序员会遇到临时变量,特别是在压力下.没有它会更容易: 没有三个变量(第一,第二和第三).相反,有一个变量:一个包含序列的最后两个元素的数组: int[] seq = new[] { 0,1 }; 然后,每次你想要移动到下一个数字: while(seq[1] <= input) { Console.Write("{0}",seq[1]); seq = new[] { seq[1],seq[0] + seq[1] }; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |