代码实现
function fib (num) {
if (typeof num !== 'number') {
return [];
}
return [...new Array(num)].reduce(arr => {
// 默认是 [] [1] [1,1] [1,1,2] ...
const clone = arr.slice(0);
// undefined 1 1 2
const last1 = clone.pop();
// undefined undefined 1 1
const last2 = clone.pop();
let sum = (last1 + last2);
// undefined + undefined === NaN
// 1 + undefined === NaN
if (Number.isNaN(sum)) {
sum = 1;
}
arr.push(sum);
return arr;
}, [])
}
console.log('fib(5) :', fib(1));
运行结果:
fib(10) : [
1, 1, 2, 3, 5,
8, 13, 21, 34, 55
]