遞迴函式的優化

2021-08-22 13:28:20 字數 906 閱讀 2077

為什麼要優化遞迴

先看個例子:

// 遞迴裴波那切數列

function

fibonacci

(n) else

}function

t(n)

t(35);

t(40);

t(42);

列印結果如下:

9227465

a: 57.330ms

102334155

a: 589.497ms

267914296

a: 1550.535ms

正常的遞迴函式,算到42就已經花費1.5s了,更不用說再往後算了

優化方法一:

var fibarr = [ undefined, 1, 1 ];

function

fibonacci

( n )

function

t(n)

t(35);

t(40);

t(42);

列印結果如下:

9227465

a: 0.284ms

102334155

a: 0.088ms

267914296

a: 0.080ms

優化方式二:

function

fibonacci

(n)

return y;

}function

t(n)

列印結果如下:

9227465

a: 0.416ms

102334155

a: 0.400ms

267914296

a: 0.170ms

python遞迴函式的優化

儘管遞迴可以通過迴圈來實現,但是往往遞迴 更加簡潔,邏輯更加清晰,先來看一段python遞迴 def fact n if n 1 return 1 else return fact n 1 n print fact 5 該遞迴呼叫的過程如下 計算機在呼叫函式時會使用堆疊,每呼叫乙個函式會增加一層棧幀...

遞迴 遞迴的優化

遞迴演算法在工作或者各種資料結構中使用比較頻繁,遞迴演算法的簡化常見有自頂向下還有備忘錄法 自頂向下 t n t1 n t2 n t3 n 25c t1 n r11p1 r12p2 r13p3 r14p4 r15p5 r16p6 r17p7 r18p8 r19p9 t1 n 1 x tau1 t1 ...

高階函式與尾遞迴優化

高階函式特點 1.函式接收的引數是乙個函式 2.函式的return值中包含函式 滿足以上任一條件就稱這個函式為高階函式。高階函式例子 某個函式的return值可以是任何函式,包括自己 ef test1 print from test1 def test2 print from test2 retur...