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
添加回答
舉報