加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在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] };
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读