我尝试在javascript中玩递归。我为斐波那契数列编写了一个函数。但是,仅当参数为0时有效
fib = (x)=>{
if (x == 0 || x ==1) {
return 1
} else {
return fib(x-1) + fib(x+1)
}
}
它返回1表示1,但大于0的数字表示错误超出了最大调用堆栈大小
答案 0 :(得分:2)
这不是斐波那契数列。这是斐波那契数列:
fib = (x) => {
if (x == 0 || x == 1) {
return 1;
} else {
return fib(x - 1) + fib(x - 2);
}
}
for (let i = 0; i < 10; i++) {
console.log(fib(i));
}
当然是最简单的形式。如果超过10,您将体验到计算机成指数级的计算成本。
答案 1 :(得分:2)
您需要倒数第二个迭代的值,而不需要前面的迭代。
也请在这里查看:Fibonacci number。
const fib = x => {
if (x === 0 || x === 1) {
return 1;
}
return fib(x - 2) + fib(x - 1);
};
console.log(fib(7));