只需刪除
fib.push(fib[i]);
然後
function fibonacci(n) {
let i;
const fib = [];
fib[0] = 0;
fib[1] = 1;
for (i=2; i<n; i++) {
fib[i] = fib[i-2] + fib[i-1];
}
}
fibonacci(7);
對產出:
[ 0, 1, 1, 2, 3, 5, 8 ]
更新
評論我固定的代碼後,使這可能使用情況i=1
"use strict";
function fibonacci(n) {
let i;
const fib = [];
fib[0] = 0;
for (i=1; i<n; i++) {
fib[i] = ((fib[i-2]!==undefined)?fib[i-2]:1) + fib[i-1];
}
console.log(fib)
}
fibonacci(1);
fibonacci(2);
fibonacci(7);
[ 0 ]
[ 0, 1 ]
[ 0, 1, 1, 2, 3, 5, 8 ]
我刪除的fib[1]
定義,總之給人i
元素使用價值1
他們只有當fib[i-2]
是undefinted
這意味着這個條件離子僅在i=1
時才滿足,因爲循環從1
開始,但表fib
沒有鍵-1
。當i
大於1
時,則存在fib[i-2]
並且等式具有如前所述的值。
謝謝,但我意識到現在的代碼不會工作n = 1 – MaxES
@MaxES,這取決於你喜歡的風格。根據[維基百科](https://en.wikipedia.org/wiki/Fibonacci_number),您可以添加一個檢查並根據需要設置第一個值。 –