A для l oop в простой программе на c ++ в g ++ 7.5 на Ubuntu - PullRequest
0 голосов
/ 25 марта 2020

код:

#include <iostream>

using namespace std;

int main()
{
    int n;
    while (cin >> n) {
        if (n == 0)
            return 0;
        int year[n + 1];
        year[0] = 1;
        year[1] = 2;
        year[2] = 3;
        year[3] = 4;
        year[4] = 6;
        for (int i = 5; i <= n; i++) {
            year[i] = year[i - 1] + year[i - 3];
        }
        cout << year[n - 1] << endl;
        // for (int temp : year)
        //     cout << temp << endl;
    }
}

Проблема заключается в том, что для l oop. Я не изменил значение n. Когда я запускаю его с n = 2, он выводит не правильный ответ, а 10. После отладки я обнаружил, что при вводе 1 или 2 значение n меняется на 6, когда для l oop выполнено. И когда вводится 3 или 4, выход нормальный. В то же время, я также пробовал другие компиляторы, у которых не было этой проблемы, и я также подтвердил после отправки этого вопроса. Что-то не так с моим g ++? Как я могу это исправить?

...