JavaScript尾遞迴優化探索

2021-09-20 09:21:13 字數 546 閱讀 4010

function f()

function fibonacci (n)

此函式沒有進行任何的優化,當我們在控制台去執行此函式的時候,fibonacci(40)就已經出現了明顯的響應慢的問題,fibonacci(50)的時候瀏覽器卡死。 2. 優化

function fibonacci (n, ac1, ac2)
function trampoline(f) 

return f;

}

**修改為返回乙個新函式。

function fibonacci (n, ac1, ac2)

兩個函式結合就可以將遞迴狀態為迴圈,棧溢位的問題也就解決了。

trampoline(fibonacci (100000))

// infinity

原文發布時間為:2023年07月04日

掘金

尾遞迴優化

尾遞迴就是遞迴語句在函式最後執行,且無需對返回值進行進一步操作。編譯器會對這種遞迴進行優化,在進入深層遞迴時候,不是在遞迴棧進行入棧操作,而是直接覆蓋棧頂。線性遞迴與尾遞迴區別如下 線性遞迴 1 2 3 4 5 longrescuvie longn 尾遞迴 1 2 3 4 5 6 7 8 9 10 ...

尾遞迴優化

什麼是尾遞迴 尾遞迴就將遞迴呼叫寫在函式的尾部return 尾遞迴的好處 解決傳統遞迴的棧溢位問題 尾遞迴適合的業務場景 1.需要遞迴優化的函式沒有用timeout等非同步佇列進行遞迴呼叫函式自己 2.需要遞迴優化的遞迴函式的返回值不是每次都返回,而是條件性返回 尾遞迴優化後的遞迴demo meth...

尾調遞迴 ,尾調優化

尾調優化 title head body p pre 尾調優化,值得是函式最後一步呼叫了另乙個函式,函式呼叫會在內部形成乙個 呼叫記錄 儲存呼叫位置,內部變數等,a函式呼叫b函式,形成乙個 a到b的呼叫幀,直到結果返回,幀消失,b呼叫c函式,這樣,就形成了 呼叫棧,pre p h4 pre 尾調,不...