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上他们说我的回答是不正确的。也许我忽略了一些东西。有什么帮助吗?
答案 0 :(得分:2)
这一行
if ((Numeros[Indice] + Acumulador) > 4000000)
正在检查总和大于4MM。您需要检查术语(Numeros [Indice])是否大于4MM。所以改变这个......
if (Numeros[Indice] > 4000000)
可能是一个很好的起点。
答案 1 :(得分:0)
而且你的测试条件在for循环中是没用的。i
永远不会达到4000000的值。
只是一个
while(1){
//code
}
也会这样做,不需要i
因为你从不使用它