📜  算法|算法分析|问题19

📅  最后修改于: 2021-06-28 23:24:38             🧑  作者: Mango

请考虑以下两个功能。这些功能的时间复杂度是多少?

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)

这个问题的测验