这种递归算法的重要特征是什么?

时间:2016-03-11 03:26:08

标签: recursion big-o

我们遇到尺寸为n的问题

递归地求解大小为n-1的子问题并执行的算法 对解决方案的一系列工作。

我尝试使用plug n chug,发现big-O是n,线性的,但这对我来说似乎不对。我还能尝试什么?

2 个答案:

答案 0 :(得分:2)

数学堆栈交换的人可能会比我更好地做到这一点,但我会给它一个机会。

算法的描述含糊不清,因此有两种可能性:

  1. 算法为每个子问题执行一定量的工作。 在这种情况下,算法实际上将在O(n)时间运行(技术上 2n,但忽略常数因素。)
  2. 该算法为每个子问题执行线性工作量。 在这种情况下,您要查看每个都执行线性工作的线性循环 执行。执行n,每次执行n = O(n^2)。 显然,每次连续执行都会减少工作量,这就行了 表现为复发关系解决方案 T(n) = (1/2)n^2,假设我记得这种问题模式正确。

答案 1 :(得分:2)

您提到的递归公式为:

  • T(n)= T(n-1)+ O(n)

这意味着:

T(n)= kn + k(n-1)+ k(n-2)+ .. + k,等于k * n *(n + 1)/ 2.

因此,算法的复杂性为O(n 2 )。