動態規劃 迭代與遞迴

2021-08-26 15:06:59 字數 537 閱讀 2287

遞迴:好像相對高明,但其實效率而言遞迴並不是最佳方案。。

迭代:貌似複雜,其實效能更高效。

分而治之

所謂動態規劃:就是通過遞迴,找出問題本質,並且給出乙個初步的解之後,再將其等效的轉換為迭代的形式。

兩個栗子:

1. 斐波那契數列(青蛙跳台階):

2. 最長公共子串行:

對序列a[0,n]  b[0,m]  lcs(a,b)  無非三種情況:

n=-1 or m=-1  , 則為空序列(「」)

a[n] != b[m]   則  lcs(a[0,n], b[0,m))  與  lcs(a[0,n), b[0,m])中取長者(末字元不同,扣掉)

a[n] = b[m] = 'x'   則 lcs(a[0,n), b[0,m))  + 'x'    #  末字元相同,都去掉,遞迴求解

遞迴:設計出可行且正確的解。

動態規劃:消除重複計算,提高效率。

迭代與遞迴

to iterate is human,to recurse divine.l.peter deutsch 迭代是人,遞迴是神 遞迴 int f1 int n1 迭代 int f2 int n2 return s 看完上邊兩個demo,是不是更不知所云 所以下面進行理論 利用變數的原值推算出變數的乙...

遞迴和迭代 迭代與遞迴

很多程式設計小白都會遇到 迭代 和 遞迴 的問題 包括我自己 大部分同學還是不知道迭代與遞迴的區別。下面我就嘗試用最通俗易懂的模式講解遞迴與迭代的區別。1.迭代 迭代其實很簡單,我們在程式設計中經常用到迭代。比如說 i 1 print i 這個就是乙個迭代,沒想到吧。迭代的意思其實就是在迴圈 現了參...

迭代與遞迴的區別

迭代和遞迴的區別 從 程式設計之美 的角度看,可以借用一句非常經典的話 迭代是人,遞迴是神!來從巨集觀上對二者進行把握。遞迴實際上不斷地深層呼叫函式,直到函式有返回才會逐層的返回,遞迴是用棧機制實現的,每深入一層,都要占去一塊棧資料區域,因此,遞迴涉及到執行時的堆疊開銷 引數必須壓入堆疊儲存,直到該...