我在纸上的测试上有这个简单的函数。我的答案是9,但当我回到家时,我的游戏结果是console.log(fib(6)) 8。为什么?
我还问了我的教授,他给了我这张图表,我还是不明白。有什么帮助吗?

function fib(num1) {
if (num1 <= 2) {
return num1 = 1;
} else {
return fib(num1 - 1) + fib(num1 - 2);
}
}
console.log(fib(6));
发布于 2018-07-15 00:00:58
这个程序是著名的Fibonacci程序。也就是说,前两个数字之后的每个数字都是前两个数字的总和。例如:
1 1 2 3 5 8 13.....如你所见,第六个数字是8。
现在我们正在讨论如何解决这个问题。首先,您应该知道递归关系是:
F(i) = F(i - 1) + F(i - 2)F( 1 ) = 1,F(2) =1。
所以代码应该是:
function fib(num1) {
if (num1 <= 2) return 1;
return fib(num1 - 1) + fib(num1 - 2);
}而这并不是解决这个问题的有效方法,因为它存在重叠子问题。你可以试着用记忆来解决它!
https://stackoverflow.com/questions/51340925
复制相似问题