📌  相关文章
📜  国际空间研究组织 | ISRO CS 2015 |问题 40

📅  最后修改于: 2022-05-13 01:58:00.896000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2015 |问题 40

以下 C函数的时间复杂度为(假设 n > 0)

int recursive (int n) {
if(n == 1)
return (1);
else
return (recursive (n-1) + recursive (n-1));
}

(A) O(n)
(B) O(n log n)
(C) O(n 2 )
(D) O(2 n )答案: (D)
解释:代码的递归关系 = T(n) = 2T(n-1) + k。
我们可以使用替换方法解决递归:

T(n) = 2T(n-1) + k
     = 2(2T(n-2) + k) + k
     = 2(2(2T(n-3) + k) + k) + k.....
     = 2xT(n-x) + 2(1 + 2 +....+ 2x-1)k
When base condition is met, i.e. n=1, x=n-1
     = 2n-1 T(1) + k(2n)
     = O(2n)

所以,选项(D)是正确的。
这个问题的测验