Ниже приведен код рекурсивного Фибоначчи, и он вызывает переполнение стека. Почему простое изменение условия с n == 1 на n <2 заставляет его работать? </p>
Рассмотрим нормальную функцию Фибоначчи: F (n) = F (n - 1) + F (n - 2). Эта функция может быть представлена здесь как F (n) = вычисления (n, 2).
Концепция здесь такова: вычислить (n, x) = вычислить (n - 1, x) + вычислить (n - 2, x) + вычислить (n - 3, x) + ... + вычислить (n - х, х);
public static int calculate(int n, int x) {
if (n == 1) {
return n;
}
else {
int output = 0;
for (int i = 1; i <= x; i++) {
output += calculate(n - i, x);
}
return output;
}
}
}