Js中通過記憶來優化遞迴方法

2021-09-01 18:52:37 字數 1382 閱讀 9057

函式可以通過用物件去記住先前操作的結果,從而避免無謂的運算,這種優化稱為 記憶(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 注意 涵數名稱不要包含特殊字元...