以下C函数的时间复杂度为(假设n> 0(GATE CS 2004))
int recursive (mt n)
{
if (n == 1)
return (1);
else
return (recursive (n-1) + recursive (n-1));
}
(A) 0(n)
(B) 0(登录)
(C) 0(n ^ 2)
(D) 0(2 ^ n)答案: (D)
说明:上面程序的递归表达式将是。
T(n) = 2T(n-1) + c
T(1) = c1.
让我们解决它。
T(n) = 2(2T(n-2) + c) + c = 4T(n-2) + 3c
T(n) = 8T(n-3) + 6c + c = 8T(n-3) + 7c
T(n) = 16T(n-4) + 14c + c = 16T(n-4) + 15c
............................................................
.............................................................
T(n) = (2^(n-1))T(1) + (2^(n-1) - 1)c
T(n) = O(2^n)
这个问题的测验