给定伪代码的递归关系和渐近紧边界是什么?

时间:2019-04-18 15:07:06

标签: runtime complexity-theory recurrence

为我提供了一个伪代码来查找递归关系和渐近约束,对于我的一生,我什至不知道该如何尝试并理解如何应对。

Calc_a(n):
     if n==1:
          return 1
     sum = 0
     for i = 1 to n−1 
          sum = sum + calc_a(i)
return sum

首先,正如我所说,我被要求为此代码找到一个递归关系公式,然后我尝试通过遵循代码对一些输入的作用来解决它。 我认为它返回的是上次返回的数量的两倍。 (除非是1和2,否则两者都返回1)。

所以我心想-可能是这样的: T(n) = 2*T(n-1) + c 因为返回的总和等于调用该方法的次数,所以我添加了c作为常量,以显示每次迭代完成的“一行工作”的数量。 (即if-else和sum =行)。

问题在于,这与他们在第二部分中要求我执行的操作不匹配: 为关系Hint:look both at T(n) and at T(n + 1) at the same time

查找紧密的渐近边界

但是根据我发现的关系,很容易证明它是Omega(2^n),也不难证明它是BigO(2^n)

有帮助吗?提前致谢。 :)

0 个答案:

没有答案