Fibonacci偶数和的C#问题

时间:2018-12-11 20:28:13

标签: c# fibonacci

我正在从Eurler的页面解决问题。实际上,我花了大量时间尝试对我的代码进行处理。它会正确输出斐波那契数字,并对其求和(15个数字)。但是,当我将限制设置为4 000 000个数字时,它显示的输出为:-1833689714。我将int更改为uint或large,但答案仍然不正确。 这是问题的链接:https://projecteuler.net/problem=2https://projecteuler.net/problem=2

这是我的代码:

class Program
{
    static void Main(string[] args)
    {
        int a = 0;
        int b = 1;
        int fibonacciNumber = 0;
        int sum=0;
        bool whichNumber = false;

        for(int i = 0; i < 4000000; i++)
        {               
            fibonacciNumber = a + b; 
            if (fibonacciNumber % 2 == 0) sum += fibonacciNumber; //adding to sum of even-numbers

            if (whichNumber == false) //operations to change numbers 
            {
                a = fibonacciNumber;
                whichNumber = true;
            }

            else if (whichNumber == true)
            {
                b = fibonacciNumber;
                whichNumber = false;                    
            }
        }
        Console.WriteLine(sum);
        Console.ReadLine();
    }
}

有人看到我在哪里犯错了吗?

3 个答案:

答案 0 :(得分:4)

尝试使用long而不是int。这将需要您执行更多的步骤,但又会受到限制。如果您想要非常大的数字,则需要一种可以处理它们的类型,例如BigInteger

答案 1 :(得分:2)

再次阅读问题。您无需将前四百万斐波纳契数相加。只有少于四百万的数字。

您将不得不更改实现,但是您不需要像BigIntegerint这样的较大数据类型。

答案 2 :(得分:-1)

看起来您的sum变量需要为long。该值大于int可以容纳的值。