js函数的记忆

函数可将之前操作的结果记录在某个对象里,避免无谓的重复计算,js的对象和数组要实现这种优化是非常方便的。

下面这是一个构造带记忆功能函数的函数:

var  memoizer = function(memo,formula){

       var  recur = function(n){

              var  result = memo[n];

               if(typeof  result  !== 'number'){

                        result = formula(recur,n);

                        memo[n]=result;

               }

               return  result;

       };

        return  recur;

};

运用:

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

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

你可能感兴趣的:(js)