js動態規劃與遞迴

2021-07-29 17:59:59 字數 424 閱讀 6755

動態規劃:從底部開始解決問題,將所有 小問題解決掉,然後合併成乙個整體解決方案,從而解決掉整個大問題

遞迴:從頂部開始將問題分解,通過解決掉所有分解的小問題來解決整個問題

計算斐波那契數列

function

recurfib

(n) else

}

遞迴:很多函式執行了多次

動態規劃使用乙個陣列儲存部分函式計算結果

function dynfib(n)  else 

return

val[n-1]

}}//或者只儲存n前面的兩個值

function iterfib(n)

return result

}

動態規劃與遞迴

這裡借用leetcode的一道例題,來說一下動態規劃和遞迴的區別 給定乙個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。相鄰的結點 在這裡指的是 下標 與 上一層結點下標 相同或者等於 上一層結點下標 1 的兩個結點。例如,給定三角形 2 3,4 6,5,7 4,1,8,3...

js遞迴 記憶函式 動態規劃

遞迴在處理某些問題,尤其在迴圈遍歷方面,常常可以用比較簡潔的 實現一些複雜的功能 但是由於它是呼叫自身,所以如果層級比較多,一是效能會比較差,其次容易出現棧溢位 對於這兩點通過新增乙個變數儲存中間結果可以部分提公升效能,但是還是有上限,尤其是呼叫萬級的次數,還是有棧溢位的風險 乙個例子 關於斐波那契...

暴力遞迴與動態規劃

1 漢諾塔問題。列印n層漢諾塔從最左邊移動到最右邊的全部過程。public static void main string args public static void method int n,string from,string to,string help method n 1,from,h...