通过缓存+闭包优化斐波那契数列

285 阅读1分钟

弊端

递归的方式影响性能,所以使用缓存来实现

思路

创建一个缓存数据

  • 如果缓存数组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));