JavaScript中的斐波那契数列

sum*_*mon 7 javascript fibonacci

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));
Run Code Online (Sandbox Code Playgroud)

上面代码的输出是13。我不了解for循环部分。在第一次迭代中i = 2,但是在第二次迭代之后,i = 3所以a = 2又在b = 1第三次迭代之后,i = 4所以a = 3b = 2等等 [0, 1, 1, 3, 5, 7, 9, 11]。正确的顺序将是[0, 1, 1, 2, 3, 5, 8, 13]

Sai*_*man 7

您没有使用数组中已有的前两个数字>生成要插入到数组中的新斐波那契数。

https://www.mathsisfun.com/numbers/fibonacci-sequence.html

在这里,我使用和的result[i-2]result[i-1]来生成新的斐波那契数并将其推入数组。

另外,要生成n术语数量,您需要条件为i < nnot 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)); 
Run Code Online (Sandbox Code Playgroud)

返回result[n-1]如果你想获得的第n项。


moj*_*ani 5

我对斐波那契数列的解决方案:

 const fibonacci = n =>
      [...Array(n)].reduce(
        (acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i),
        []
      )
Run Code Online (Sandbox Code Playgroud)