function fib(n) {
const result = [0, 1];
for (var i = 2; i <= n; i++) {
const a = (i - 1);
const b = (i - 2);
result.push(a + b);
}
return result[n];
}
console.log(fib(8));
上面代码的输出是
13
。我不明白for循环部分。在第一次迭代i = 2
中,但是在第二次迭代之后i = 3
这样a = 2
和b = 1
以及第三次迭代i = 4
这样a = 3
,b = 2
等等,如果要进行下去,则最终序列将是:[0, 1, 1, 3, 5, 7, 9, 11]
,这是不正确的。正确的顺序将是[0, 1, 1, 2, 3, 5, 8, 13]
最佳答案
https://www.mathsisfun.com/numbers/fibonacci-sequence.html
在这里,我使用了result[i-2]
和result[i-1]
的总和来生成新的斐波那契数并将其插入数组。
另外,要生成条款的n
数量,您需要条件为i < n
而不是i <= n
。
function fib(n) {
const result = [0, 1];
for (var i = 2; i < n; i++) {
result.push(result[i-2] + result[i-1]);
}
return result; // or result[n-1] if you want to get the nth term
}
console.log(fib(8));
如果您想获得第n个字词,请返回
result[n-1]
。关于javascript - JavaScript中的斐波那契数列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51111870/