遞歸(recursion)和動態規划(dp:dynamic programming)的區別


還拿斐波那契函數舉例:

遞歸:

int fib(int n){  
     if(n>1) return fib(n-1) + fib(n-2);  
     else return n; // n = 0, 1時給出recursion終止條件  
}  

而動態規划:

 F[0] = 0;F[1] = 1;
 for(i = 2; i <= N; i++)
       F[i] = F[i-1] + F[i-2];

看完,是不是覺得和迭代很像?沒錯

這里,動態規划和迭代在實現上是一樣的。(其他地方可能就不一樣。。)

。總結:能用動態規划或者迭代,就不用遞歸,因為遞歸太耗堆棧了。效率不高。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM