為什麼要優化遞迴
先看個例子:
// 遞迴裴波那切數列
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...