【问题标题】:The Fibonacci Beanstalk recursion javascript斐波那契 Beanstalk 递归 javascript
【发布时间】:2016-12-06 19:51:06
【问题描述】:

有人能解释一下这段代码是如何工作的吗?它是来自 codeacademy 的递归 js 代码。该代码使用斐波那契数列确定增长率。代码输出

var height = growBeanstalk(5) // 5
var height = growBeanstalk(8) // 21 etc. 
(4) => //3 (3) => //2

提前谢谢你!

function growBeanstalk(years) {
// Base case
if (years <= 2) {
  return 1;
}   
// Recursive case
return growBeanstalk(years - 1)+ growBeanstalk(years - 2);  
}

// Set the height of the beanstalk using your function
var height = growBeanstalk();

console.log(height);

【问题讨论】:

  • Stack Overflow 对使用斐波那契数列的递归有很多很好的解释;有几个是在 JavaScript 中的。对这个主题进行研究后,您有哪些困惑?
  • 我很困惑,例如在 growBeanstalk(8) 给出 21 的情况下,我知道它是 8+13,但为什么以及声明在哪里?为什么直到 5 才返回 5、6=>8、7=>13。为什么 6 返回 8?
  • 你没有做研究? Fibonacci sequence.

标签: javascript recursion fibonacci


【解决方案1】:

基本上,当您调用growBeanstalk 时,它当然会执行该函数,首先它检查数字是否为 2 或更少,这就是所谓的“基本情况”,即递归结束。

函数的另一部分,是递归本身,基本上是再次调用自身,减去 1 和 2,因此确保函数将在某个时候结束。

这是一个如何调用函数的示例,当您使用 4 调用时:

growBeanstalk(4) -> 3
    |----growBeanstalk(3) -> 2
       |---growBeanstalk(2) -> 1
       |---growBeanstalk(1) -> 1
    |----growBeanstalk(2) -> 1

【讨论】:

  • 感谢您的解释,但它是如何工作的?我的意思是递归,比如5?因为 5-1=4, 5--2 = 3, 4+3 =7,但是它返回 5,它的语句或条件在哪里,它决定了斐波那契?对不起,我只是一个初学者。
猜你喜欢
  • 2010-12-03
  • 2014-04-02
  • 2016-07-01
  • 2017-11-18
  • 2014-01-08
  • 2011-12-14
  • 2012-11-29
  • 2018-04-10
相关资源
最近更新 更多