T(n)运行时间为两个输入的函数

时间:2012-10-14 03:28:41

标签: c++ algorithm recursion analysis

对于具有两个输入的函数,您如何找到T(n)运行时(不是大O运行时)?你只是考虑输入'n'吗?

int h(int a, int b) {
  if (a > 0) {
    return h(a-1, a+b);
  } 
  else {
    return 0;
  }
}

3 个答案:

答案 0 :(得分:3)

在这种情况下,我们只需要考虑a,因为此算法的长度不依赖于b。

换句话说,因为我们可以传入20000或-2而不会影响我们的时间(忽略添加a+b的实际时间),我们不应该在计算中考虑b。

在更一般的情况下,如果输入确实取决于ab,我们只会在时间复杂度函数中考虑这一点。换句话说,T(a, b)不仅仅是T(a)

答案 1 :(得分:0)

因为此函数仅在a上重复,并且a在每一步中减少1,所以它将给出线性复杂度。所以答案是T(a)。

答案 2 :(得分:0)

鉴于每个(a,b)对的函数值都为零 - 递归将始终以else分支结束 - 编译器可能足够聪明,可以有效地将代码减少到"返回0"对于整个身体并留下所有if / else和递归的东西,导致O(1)复杂性和相应的运行时间。