构造带记忆功能的函数

构造一个带有之前结果缓存的函数,减少不必要的计算


    /*
    传入 初始缓存记忆的数组memo 和计算公式formula
    返回 一个管理memo存储和在需要时调用formula的函数recur
    */
    var memoizer = function(memo,formula) {
      var recur=function(n) {
        var result=memo[n];
        if (typeof result !=='function') {
            result=formula(recur,n);
            memo[n]=result;
        }
        return result;
      };
      return recur;
    }

用我们的memoizer函数定义fibonacci函数

var fibonacci=memoizer([0,1],function(recur,n) {
  return recur(n-1)+recur(n-2);
})

用我们的memoizer函数定义阶乘函数

var fibonacci=memoizer([1,1],function(recur,n) {
  return n*recur(n-1);
})

你可能感兴趣的:(构造带记忆功能的函数)