有人可以向我解释如何计算h3(最坏情况)的时间复杂度...... 鉴于此代码:
int g3(int n) {
if (n <= 1)
return 2;
int goo = g3(n / 2);
return goo * goo; //i have trouble with this line`
}
int h3(int n) {
return g3(g3(n)); //trouble with this one too
}
我试图根据我计算的nlog(n)的大O来计算复杂性,但是它错了...... 是否有快速,正确的快速技术方法来快速正确地解决这类问题? (我通常使用递归树方法来计算时间复杂度)
答案 0 :(得分:0)
g3具有O(log n)复杂度,n在n的所有值中除以2,结果是对数函数。 h3有O(log n),这是因为复杂性取决于函数g3,无论函数组成在返回值g(g(n))和n的值中,关键是g函数复杂度。该算法需要使用n的所有值并执行对数以提供n * logn复杂度