美文网首页
JS---记忆

JS---记忆

作者: 麻辣小面瘫 | 来源:发表于2018-01-15 21:52 被阅读0次

    记忆:函数可以将先前操作的结果记录在某个对象里面,从而避免无谓的重复运算。这种优化被称之为记忆。

    斐波那契数列:
    一般写法:

    function Fibb(n){
      return n < 2? n : Fibb(n-1)+Fibb(n-2);
    }
    

    但是这样写,做了太多了无所谓的计算
    优化:

      声明一个moment的数组来保存计算的结果,这个存储结果可以隐藏在闭包中,当函数被调用时,这个函数首先检查结果是否存在,如果存在,则立即返回;
       var fibb = function(){
          var moment = [0,1];
          var fib = function(n){
              var results = moment[n];
              if(typeof result !== 'number'){
                   result = fib(n-1) + fib(n-2);
                   moment = result[n];
              }
              return results
          };
          return fib;
       }()
    

    推广

     var memoizer = function(memo,formula){
      var recur = function(n){
        var result = mome[n];
        if(typeof result !== 'number'){
          result = formula(recur,n);
          moment[n] = result
        }
        return result;
      }
      return recur;
    }
    
    var fibb = momizer(momt[0,1],function(recur,n){
      return recur(n-1) + recur(n-2);
    })
    

    相关文章

      网友评论

          本文标题:JS---记忆

          本文链接:https://www.haomeiwen.com/subject/gzbjkxtx.html