斐波那契数列-js

当第一次在论坛里偶然看到斐波那契数列,对于高数学的不咋滴的我,心想:这是个啥?百度一下,拨开云雾见青天;
斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........

这个数列从第3项开始,每一项都等于前两项之和;
那该怎么用js去实现这一数列呢?直接上代码

function* fibonacci() {
  let [prev, curr] = [0, 1];
  for (;;) {
    yield curr;
    [prev, curr] = [curr, prev + curr];
  }
}

for (let n of fibonacci()) {
  if (n > 1000) break;
  console.log(n);
}

或者
初始化一个长度为 n 的空数组。使用 Array.prototype.reduce() 将计算结果添加到数组中。计算结果为最后两个值相加之和,应注意前两个值除外。

const fibonacci = n =>
  [...Array(n)].reduce(
    (acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i),
    []
  )
fibonacci(10)
console.log  [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

猜你喜欢

转载自www.cnblogs.com/yxf0518/p/10283580.html