计算此代码的时间复杂度

时间:2018-02-18 21:30:54

标签: time time-complexity

有人可以向我解释如何计算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来计算复杂性,但是它错了...... 是否有快速,正确的快速技术方法来快速正确地解决这类问题? (我通常使用递归树方法来计算时间复杂度)

1 个答案:

答案 0 :(得分:0)

g3具有O(log n)复杂度,n在n的所有值中除以2,结果是对数函数。 h3有O(log n),这是因为复杂性取决于函数g3,无论函数组成在返回值g(g(n))和n的值中,关键是g函数复杂度。该算法需要使用n的所有值并执行对数以提供n * logn复杂度