C#中第94个斐波那契数的错误

c#

我正在用 C# 计算斐波那契数,但自从数字 94 以来我得到了错误的数字。

这是我的代码。

    static void Main(string[] args)
    {
        string N = Console.ReadLine();
        ulong n = ulong.Parse(N);
        ulong[] fibonacci = new ulong[n+1];
        fibonacci[0] = 0;
        if (n == 1)
        {
            fibonacci[1] = 1;
        }
        if (n>=2)
        {
            fibonacci[1] = 1;
            for (ulong i = 2; i < n+1; i++)
            {
                fibonacci[i] = (ulong)fibonacci[i-1] + (ulong)fibonacci[i-2];
            }
         }
     }

     Console.WriteLine(fibonacci[n]);

我一直到第 93 个号码 12200160415121876738 为止,但我在第 94 个号码时得到 1293530146158671551,真正的号码是 19740274219868223167。

我不知道我的代码有什么问题。

回答

我认为您不需要在ulong类型中存储N的数量!它也可以存储为int!最重要的部分是存储第N个斐波那契数的值。您可以更简洁地计算它,而无需考虑构建最后一个数字的大数组!

public static void Main(string[] args)
    {
        string N = Console.ReadLine();
        int n = int.Parse(N);
        BigInteger[] fibonacci = new BigInteger[3];
        fibonacci[0] = 0;
        fibonacci[1] = 1;
        fibonacci[2] = 1;
        
        if (n>=3)
        {
            for (int i = 3; i < n+1; i++)
            {
                fibonacci[0]=fibonacci[1];
                fibonacci[1]=fibonacci[2];
                fibonacci[2]=fibonacci[1]+fibonacci[0];
            }
         }
         Console.WriteLine(fibonacci[2]);
     }


以上是C#中第94个斐波那契数的错误的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>