閉包的學習

閉包
內部函數比外部函數擁有更長的生命期.

應用
記憶功能
— 計算斐波那契數列 1 1 2 3 5 8 13…..

    var memoizer = function(memo,formula){      
               var recur = function(n){
                    var result = memo[n];
                    if( typeof result !== 'number')  // 未計算過
                    {
                       result  = formula(n,recur);
                       memo[n] = result;             // 將計算過的保留結果
                    }
                    return result;
              }
      return recur;
    }
    var formula = function(n,recur){
        return recur(n-1) + recur(n-2);
    }
    var feibo = new memoizer([1,1],formula);
    feibo(11);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章