2013-03-18 42 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