这很好用:
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。有人可以解释一下原因吗?有趣的是它适用于简单的求和函数:
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));
它应该适用于n==1 || n==0
function fibonacci(n) {
if (n == 1 || n==0) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
对n===1
来说它不起作用,因为对于n = 2秒的呼叫将去n-2
这是qqxxswpoi,那就是你没有处理的