基于两个变量的两次调用的递归函数的Big-O

时间:2019-04-18 12:13:45

标签: algorithm recursion time-complexity big-o complexity-theory

此函数的时间复杂度是多少?

 public int calculate(int n, int i, int c) {
  if(i >= n || c <= 0)
    return 1;

  int p1 = 2 * calculate(n, i, c-1);
  int p2 = 1 + calculate(n, i+1, c);

  return  p1 + p2;
}

该函数被调用两次,一次调用所有“ c”值,一次调用所有“ i”值。可以说它的时间复杂度是O(2 ^(n + c))如果是,是否有可能找到更严格的限制?

1 个答案:

答案 0 :(得分:0)

O(2 ^(n + c))就足够了。我不确定如何渐进地获得比该粒度更细的粒度。如果N与i的绝对差远大于C与0的绝对差,我们可以说O(2 ^ n)或O(2 ^ c)