为了账号安全,请及时绑定邮箱和手机立即绑定

如何在JavaScript中使用递归实现斐波那契数

如何在JavaScript中使用递归实现斐波那契数

一只名叫tom的猫 2021-04-09 13:10:41
我尝试在JavaScript中玩递归。我为斐波那契数列编写了一个函数。但是,仅当参数为0时才有效fib = (x)=>{    if (x == 0 || x ==1) {        return 1    } else {        return fib(x-1) + fib(x+1)    }}它为1返回1,但大于0的数字我得到错误,超出了最大调用堆栈大小
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

这不是斐波那契数列。这是斐波那契数列:


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,您将体验到计算机成倍的计算成本。


查看完整回答
反对 回复 2021-04-29
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

您需要倒数第二次迭代的值,而不需要前面的迭代。

也请在这里看看:斐波那契数

const fib = x => {

    if (x === 0 || x === 1) {

        return 1;

    }

    return fib(x - 2) + fib(x - 1);

};


console.log(fib(7));


查看完整回答
反对 回复 2021-04-29
  • 2 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信