请考虑以下两个功能。这些功能的时间复杂度是多少?
int fun1(int n)
{
if (n <= 1) return n;
return 2*fun1(n-1);
}
int fun2(int n)
{
if (n <= 1) return n;
return fun2(n-1) + fun2(n-1);
}
(A) fun1()和fun2()的O(2 ^ n)
(B)表示fun1()的O(n)和表示fun2()的O(2 ^ n)
(C)表示fun1()的O(2 ^ n)和表示fun2()的O(n)
(D) fun1()和fun2()的O(n)答案: (B)
说明: fun1()的时间复杂度可以写成
T(n)= T(n-1)+ C为O(n)
fun2()的时间复杂度可以写成
T(n)= 2T(n-1)+ C,即O(2 ^ n)
这个问题的测验