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

我尝试在JavaScript中玩递归。我为斐波那契数列编写了一个函数。但是,仅当参数为0时才有效


fib = (x)=>{

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

        return 1

    } else {

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

    }

}

它为1返回1,但大于0的数字我得到错误,超出了最大调用堆栈大小


一只名叫tom的猫
浏览 176回答 2
2回答

回首忆惘然

这不是斐波那契数列。这是斐波那契数列:fib = (x) => {&nbsp; if (x == 0 || x == 1) {&nbsp; &nbsp; return 1;&nbsp; } else {&nbsp; &nbsp; return fib(x - 1) + fib(x - 2);&nbsp; }}for (let i = 0; i < 10; i++) {&nbsp; console.log(fib(i));}当然,以最简单的形式。如果超过10,您将体验到计算机成倍的计算成本。

扬帆大鱼

您需要倒数第二次迭代的值,而不需要前面的迭代。也请在这里看看:斐波那契数。const fib = x => {&nbsp; &nbsp; if (x === 0 || x === 1) {&nbsp; &nbsp; &nbsp; &nbsp; return 1;&nbsp; &nbsp; }&nbsp; &nbsp; return fib(x - 2) + fib(x - 1);};console.log(fib(7));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript