弊端
递归的方式影响性能,所以使用缓存来实现
思路
创建一个缓存数据
- 如果缓存数组cache存在,直接从缓存中取
- 反之,计算斐波那契数列后,再存入缓存 cache
代码
function outer() {
var cache = [];
//这里的n是第几个数
function inner(n) {
if (cache[n] != undefined) {
return cache[n];
} else if (n == 1 || n == 2) {
return 1;
} else {
var result = inner(n - 1) + inner(n - 2);
cache[n] = result;
return result;
}
}
return {
fbnq: inner
};
}
var test = outer();
// 0,1,1,2,3,5,8,13....
console.log(test.fbnq(7));