这很好用:
function fibonacci(n) {
if (n <= 1) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
console.log('fibonacci ' + fibonacci(7));
但是如果我用(n == 1)或(n == 0)甚至是(n === 1)替换基数。我得到一个RangeError。有人可以解释为什么吗?有趣的是,它可以与简单的sum函数一起使用:
function sumTo(n) {
if (n == 1) {
return n;
} else {
return n + sumTo2(n - 1);
}
}
最佳答案
您需要同时检查n === 1 || n === 0
,因为您使用两个值n - 1
和n - 2
进行呼叫。
function fibonacci(n) {
if (n === 1 || n === 0) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
console.log('fibonacci ' + fibonacci(7));
关于javascript - JavaScript fibonacci-RangeError:当基数(n == 1)或(n == 0)时,但如果(n <=)则不然。为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52475078/