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 как вы никогда не используете его

Другие вопросы по тегам