首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的函数返回我在JavaScript中没有预料到的数字

简单的函数返回我在JavaScript中没有预料到的数字
EN

Stack Overflow用户
提问于 2018-07-14 23:38:57
回答 1查看 64关注 0票数 -1

我在纸上的测试上有这个简单的函数。我的答案是9,但当我回到家时,我的游戏结果是console.log(fib(6)) 8。为什么?

我还问了我的教授,他给了我这张图表,我还是不明白。有什么帮助吗?

代码语言:javascript
复制
function fib(num1) {
  if (num1 <= 2) {
    return num1 = 1;
  } else {
    return fib(num1 - 1) + fib(num1 - 2);
  }
}

console.log(fib(6));

EN

回答 1

Stack Overflow用户

发布于 2018-07-15 00:00:58

这个程序是著名的Fibonacci程序。也就是说,前两个数字之后的每个数字都是前两个数字的总和。例如:

代码语言:javascript
复制
1 1 2 3 5 8 13.....

如你所见,第六个数字是8。

现在我们正在讨论如何解决这个问题。首先,您应该知道递归关系是:

代码语言:javascript
复制
F(i) = F(i - 1) + F(i - 2)

F( 1 ) = 1,F(2) =1。

所以代码应该是:

代码语言:javascript
复制
function fib(num1) {
    if (num1 <= 2) return 1;
    return fib(num1 - 1) + fib(num1 - 2);
}

而这并不是解决这个问题的有效方法,因为它存在重叠子问题。你可以试着用记忆来解决它!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51340925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档