2013-03-18 76 views

回答

3

這兩個概念是完全不同的:

  • 的函數稱爲遞歸如果它調用自身。

  • 動態規劃是一種解決問題的技術。它涉及首先解決一個較小的子問題,然後將解決方案擴展到整體問題的解決方案。

通常情況下,動態規劃算法可以遞歸表示。

1

「Devide而治之」的理念算法考慮動態和遞歸既例如,在列表/數組排序,你在2份和呼叫排序函數中的每個部分再次分裂的項目...等

1

遞歸代碼,是調用自身的代碼,動態代碼是編程並自行調用的代碼。

我需要一些上下文來試圖找出誰寫的課程是誰試圖說。動態代碼可以是遞歸的,遞歸代碼可以是動態的,所以我發現你的問題的意圖令人困惑。

2

遞歸解決方案以自頂向下的方式解決問題,而動態解決方案以自下而上的方式解決問題,同時利用優先解決子問題的最優解決方案。並不總是你可以執行動態規劃,你需要確保子問題的最優解決方案也是全球問題的最佳解決方案。

一個典型的例子是第n個斐波那契數的計算:

-Recursive

Fib(n) 
    if (n <= 2) return 1 
    return Fib(n-1) + Fib(n-2) 

- 動態

Fib(n) 
previous = 1 
next = 1 
temp = 0 
for i = 2 to n do 
    temp = previous 
    previous = next 
    next = temp + next 
return next 

這是一個僞代碼,第一個重複呼叫,第二個是基於以前的情況

+0

謝謝大家!這個線程真的幫助我贏得這個概念! :D如果沒有你的解釋,我不知道這兩者之間有很大的區別 – JavaJew22 2013-03-19 18:30:50