Я вычислил ряд Фибоначчи для l oop, а l oop и рекурсивным методом. Я рассчитал эти 3 способа в одном файле. Получил результат для l oop и при l oop как обычно. Но когда я добавил коды рекурсивного метода, я получил следующий результат:
Коды:
// Calulating fibonacci series using for loop
function fibonacci(n) {
var fibo = [0, 1];
for (var i = 2; i <= n; i++) {
fibo[i] = fibo[i - 1] + fibo[i - 2];
}
return (fibo);
}
var result = fibonacci(7);
console.log(result)
// Calculating fibonacci series using while loop
function fibonacci(n) {
var fibo = [0, 1];
var i = 2;
while (i <= n) {
fibo[i] = fibo[i - 1] + fibo[i - 2];
i++;
}
return fibo;
}
var result = fibonacci(7);
console.log(result);
// Calculating fibonacci series in a recursive way
function fibonacci(n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
var result = fibonacci(7);
console.log(result);
Результат:
$ node fibonacci.js
13
13
13
см. Результат моего рекурсивного метода отображается также для l oop и для l oop. Когда я закомментировал коды рекурсивных методов, результат показал:
$ node fibonacci.js
[
0, 1, 1, 2,
3, 5, 8, 13
]
[
0, 1, 1, 2,
3, 5, 8, 13
]
, как и ожидалось. Почему это происходит??? Это кажется загадочным, поскольку у меня недостаточно знаний о рекурсии.