2 回答
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);
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
添加回答
举报