函式可以通過用物件去記住先前操作的結果,從而避免無謂的運算,這種優化稱為 記憶(memoization).
1、求數字之和基本遞迴方法
其中fibonacci為一般常用的遞迴方法,能滿足基本要求,但存在重複呼叫的現象
var count =0;//記錄遍歷次數var fibonacci = function(n)
//遍歷11次後fibonacci()被呼叫了453次 ,我們呼叫了11次
function menoizationmethod1()
document.getelementbyid("memoization1").innerhtml = htmlstr;
count = 0;
}
傳統遞迴
2、求數字之和(同過記憶優化遞迴方法)
var count =0;//記錄遍歷次數var fibonacci2 =function()
return result;
} return fib;
}();
//遍歷11次後fibonacci()被呼叫了29次 ,我們呼叫了11次
function menoizationmethod2()
document.getelementbyid("memoization2").innerhtml = htmlstr;
count = 0;
}
記憶遞迴
3、形式一般化
//此類函式形式一般化
var count =0;//記錄遍歷次數
var memoizer = function (memo,fundamenta1)
return result;
} return shell;
}//計算數字累積和
function memoizersummethod());
for ( var i = 0; i <=10; i++)
document.getelementbyid("memoization3").innerhtml = htmlstr;
count = 0;
}//計算數字乘積(階乘)
function memoizermultiplymethod());
for ( var i = 0; i <=10; i++)
document.getelementbyid("memoization4").innerhtml = htmlstr;
count = 0;
}
計算數字累積和
計算數字累積和
JS記憶優化 閉包
對於記憶模式的優化方面,在樹上看到的不錯的例子!節省了呼叫函式執行的時間 一般的遞迴函式的呼叫示例如下 function normaldigui for var i 0 i 5 i window.onload function 最後結果 下面是優化後的 記憶優化的示例,使用了閉包,節省了反覆執行同n...
通過Js來設定頁面樣式
我們可以在編輯html原始碼的時候將css樣式寫死到.css檔案或者html元素的style屬性中,但又時候可能會需要動態地來修改某個元素的樣式。我這裡介紹兩種方式 修改html元素的style屬性 動態載入link節點。在使用各種框架之前,必須要知道原生的js到底是怎麼寫的。這裡最直接的辦法就是 ...
js 通過function來定義函式
什麼是函式 函式是完成某一功能的 段。函式是可重複執行的 段。函式方便管理和維護。自定義乙個函式 通過function關鍵字來定義乙個函式。語法 function 函式名稱 可以帶引數,也可以不帶引數,可以帶乙個引數,可以帶多個引數 執行的 段 return返回值 1 注意 涵數名稱不要包含特殊字元...