如何循环数字序列以根据给定数字连续推送?(斐波那契)

我试图深入了解 Fibonacci 是如何工作的,所以我尝试了一种不同的方法并制作了我自己的方法,但不知何故它不会循环并最终只推送 1 个而不是 5 个序列。这是我的代码:


function myFibo (n){

    var myArr = [];


    if(n===1){

        myArr=[0];

        console.log(myArr);


    }else if (n===2){

        myArr[0,1];


    }else {

        

        var i = 2;

        while (i<n){

            myArr = [0,1];

            var pos1 = 0;

            var pos2 = 1;

            var sum = myArr[pos1] + myArr[pos2]; //1


            myArr.push(sum);


            pos1++;

            pos2++;

            i++;

        }


    }

    console.log(myArr);


}

    

myFibo(5);


FFIVE
浏览 81回答 2
2回答

PIPIONE

您的代码的问题很简单,就是您在 while 循环开始时重新初始化了跟踪变量:while (i<n){&nbsp; &nbsp; myArr = [0,1];&nbsp; &nbsp; var pos1 = 0;&nbsp; &nbsp; var pos2 = 1;您应该在 while 循环之前初始化变量。更新后的代码如下所示:function myFibo(n) {&nbsp; var myArr = [];&nbsp; if (n === 1) {&nbsp; &nbsp; myArr = [0];&nbsp; &nbsp; console.log(myArr);&nbsp; } else if (n === 2) {&nbsp; &nbsp; myArr[(0, 1)];&nbsp; } else {&nbsp; &nbsp; var i = 2;&nbsp; &nbsp; var pos1 = 0;&nbsp; &nbsp; var pos2 = 1;&nbsp; &nbsp; myArr = [0, 1];&nbsp; &nbsp; while (i < n) {&nbsp; &nbsp; &nbsp; var sum = myArr[pos1] + myArr[pos2]; //1&nbsp; &nbsp; &nbsp; myArr.push(sum);&nbsp; &nbsp; &nbsp; pos1++;&nbsp; &nbsp; &nbsp; pos2++;&nbsp; &nbsp; &nbsp; i++;&nbsp; &nbsp; }&nbsp; }&nbsp; console.log(myArr);}myFibo(5);

慕尼黑的夜晚无繁华

如果你想保留你的功能,试试这个稍微改变的代码function myFibo (n) {&nbsp; &nbsp; var myArr = [];&nbsp; &nbsp; if (n === 1) {&nbsp; &nbsp; &nbsp; &nbsp; myArr = [0];&nbsp; &nbsp; } else if (n === 2) {&nbsp; &nbsp; &nbsp; &nbsp; myArr = [0, 1];&nbsp; &nbsp; }&nbsp;&nbsp;&nbsp; &nbsp; if (n > 2) {&nbsp; &nbsp; &nbsp; &nbsp; myArr = [0, 1];&nbsp; &nbsp; &nbsp; &nbsp; var i = 2;&nbsp; &nbsp; &nbsp; &nbsp; // var sum = 0;&nbsp; &nbsp; &nbsp; &nbsp; while (i < n) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var sum = myArr[i-2] + myArr[i-1];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; myArr.push(sum);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i++;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp;&nbsp;&nbsp; &nbsp; console.log(myArr);&nbsp; &nbsp; return myArr;}在此处检查控制台输出https://codepen.io/vyspiansky/pen/ExKjgoj?editors=0011
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript