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 = 2b = 1以及第三次迭代i = 4这样a = 3b = 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/

10-09 09:45