Ну, проще говоря, ваша функция распечатывает следующие серии:
1, 1, 2, 3, 5, 8 ...
И, следовательно, F(5) = 8
(если мы говорим, что здесь индексирован ноль).Если вы хотите, чтобы было напечатано следующее:
0, 1, 1, 2, 3, 5, 8 ...
Какая последовательность распознается OEIS, тогда все, что вам нужно сделать, это убедиться, что вы определили F(0) = 0
.В этой степени ваша функция должна быть просто:
int FibiRec(int n) {
if (n == 0 || n == 1) {
return n; // IMPORTANT
} else {
return FibiRec(n-1) + FibiRec(n-2);
}
}
В то же время я хотел бы добавить: ваша функция имеет ужасную сложность по времени O(2^n)
.С вашей функцией попробуйте сгенерировать 40-е или 100-е число Фибоначчи, и вы поймете, о чем я говорю.