项目Euler N2 - Fibonacci算法无法正常工作

时间:2009-09-06 14:20:14

标签: algorithm fibonacci

  

Fibonacci中的每个新术语   序列是通过添加   前两个任期。从1开始   2,前10个术语将是:

     

1,2,3,5,8,13,21,34,55,89,......

     

找出所有偶数值的总和   序列中没有的术语   超过四百万。

        Int64[] Numeros = new Int64[4000005];
        Numeros[0] = 1;
        Numeros[1] = 2;

        Int64 Indice = 2;
        Int64 Acumulador = 2;

        for (int i = 0; i < 4000000; i++)
        {
            Numeros[Indice] = Numeros[Indice - 2] + Numeros[Indice - 1];

            if (Numeros[Indice] % 2 == 0)
            {
                if ((Numeros[Indice] + Acumulador) > 4000000)
                {
                    break;
                }
                else
                {
                    Acumulador += Numeros[Indice];
                }
            }

            Indice++;
        }

        Console.WriteLine(Acumulador);
        Console.ReadLine();

我的程序运行不正常,我猜是因为在Project Euler上他们说我的回答是不正确的。也许我忽略了一些东西。有什么帮助吗?

2 个答案:

答案 0 :(得分:2)

这一行

if ((Numeros[Indice] + Acumulador) > 4000000)

正在检查总和大于4MM。您需要检查术语(Numeros [Indice])是否大于4MM。所以改变这个......

if (Numeros[Indice] > 4000000)

可能是一个很好的起点。

答案 1 :(得分:0)

而且你的测试条件在for循环中是没用的。i永远不会达到4000000的值。 只是一个

while(1){
//code
}

也会这样做,不需要i因为你从不使用它