斐波拉契数列的典型特征是下一项是由前两项组成的和,我们有很多方式可以实现。
他们的实现重点都是记录值,我们也可以说,能够做值记录的方法都可以实现斐波拉契数列。
数组方法
var newItem = arr => {
return arr[arr.length - 1] + arr[arr.length - 2];
};
var allItem = itemNum => {
let arr = [1, 1];
for (let i = 0; i < itemNum - 2; i++) {
arr.push(newItem(arr));
}
return arr;
};
console.log(allItem(10));
复制代码
该方法最为直观,对数组尾项进行操作。
递归运算
let result = [1, 1];
var arrHandle = itemNum => {
result.push(result[result.length - 1] + result[result.length - 2]);
if (result.length !== number) {
goback(itemNum);
}
};
arrHandle(10);
console.log(result);
复制代码
该方法的result必须放在函数外部,并且函数不纯,改变了result,对后面的操作有影响。
闭包运算
let arrHandle = () => {
let result = [1, 1];
return itemNum => {
for (let i = 0; i < itemNum - 2; i++) {
let newItem = result[result.length - 1] + result[result.length - 2];
result.push(newItem);
}
return result;
};
};
let getAllItem = arrHandle();
console.log(getAllItem(10));
复制代码
该方法封装了一个闭包,对值的保存与操作类似第一种。