Project Euler N2 - алгоритм Фибоначчи не работает должным образом
Каждый новый член в последовательности Фибоначчи генерируется путем добавления двух предыдущих членов. Начиная с 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 ответа
Эта линия
if ((Numeros[Indice] + Acumulador) > 4000000)
проверяет, что сумма превышает 4 мм. Вам нужно проверить, что термин (Numeros[Indice]) больше 4 мм. Так что изменив это на это...
if (Numeros[Indice] > 4000000)
это, вероятно, хорошее место для начала.
А также человек ваш тест условия для цикла бесполезно.. i
никогда не достигнет значения 4000000. просто
while(1){
//code
}
также будет делать, не нужно i
как вы никогда не используете его