斐波那契数列-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]