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

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

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

FFIVE 2022-12-29 09:47:09
我试图深入了解 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);
查看完整描述

2 回答

?
PIPIONE

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

您的代码的问题很简单,就是您在 while 循环开始时重新初始化了跟踪变量:


while (i<n){

    myArr = [0,1];

    var pos1 = 0;

    var pos2 = 1;

您应该在 while 循环之前初始化变量。更新后的代码如下所示:


function myFibo(n) {

  var myArr = [];


  if (n === 1) {

    myArr = [0];

    console.log(myArr);

  } else if (n === 2) {

    myArr[(0, 1)];

  } else {


    var i = 2;

    var pos1 = 0;

    var pos2 = 1;

    myArr = [0, 1];


    while (i < n) {

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

      myArr.push(sum);

      pos1++;

      pos2++;

      i++;

    }

  }

  console.log(myArr);

}


myFibo(5);


查看完整回答
反对 回复 2022-12-29
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

如果你想保留你的功能,试试这个稍微改变的代码


function myFibo (n) {

    var myArr = [];


    if (n === 1) {

        myArr = [0];

    } else if (n === 2) {

        myArr = [0, 1];

    }

  

    if (n > 2) {

        myArr = [0, 1];

        var i = 2;

        // var sum = 0;


        while (i < n) {

            var sum = myArr[i-2] + myArr[i-1];

            myArr.push(sum);


            i++;

        }

    }

  

    console.log(myArr);


    return myArr;

}

在此处检查控制台输出https://codepen.io/vyspiansky/pen/ExKjgoj?editors=0011


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

添加回答

举报

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