我正在学习 Java 2 课程并尝试学习,但我不明白这个概念:
递归编程调用和动态编程调用有什么区别?
每个的例子是什么?
这两个概念是相当不同的:
如果函数调用自身,则称为递归函数。
动态规划是一种解决问题的技术。它涉及首先解决一个较小的子问题,然后将解决方案扩展到整个问题的解决方案。
动态规划算法通常可以递归表示。
递归解决方案以自上而下的方式解决问题,而动态解决方案以自下而上的方式解决问题,利用先前预先计算的子问题的最佳解决方案。并非总是可以执行动态规划,您需要确保子问题的最优解也是全局问题的最优解。
一个经典的例子是计算第 n 个斐波那契数:
-递归
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
这是一个伪代码,第一个重复调用,第二个基于以前的情况
“分而治之”概念算法被认为是动态和递归的,例如在列表/数组中排序,您将项目分成两部分并在每个部分中再次调用排序函数......等等
递归代码是调用自身的代码,动态代码是编程然后调用自身的代码。
我需要一些上下文来尝试弄清楚编写这门课程的人想说什么。动态代码可以是递归的,递归代码可以是动态的,所以我发现你的问题的意图令人困惑。