код:
#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 ++? Как я могу это исправить?