递归(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