首页 > 试题广场 >

void recursive(int n,int m,int

[单选题]

void recursive(int n,int m,int o)

{

  if(n<=0)

  {

    printf(“%d,%d\n”,m,o);

  }

  else

  {

    recursive(n-1,m+1,o);

    recursive(n-1,m,o+1);

  }

}

以上函数的时间复杂度为
  • O(n*m*o)
  • O(n^2*m^2)
  • O(2^n)
  • O(n!)
答案应该为C。

T(n)=2T(n-1)+c.利用递推,T(n)=2T(n-1)+c=2(2T(n-1)+c)+c=...

发表于 2019-09-08 10:58:51 回复(1)
一次递归里有两次递归,所以是阶乘的复杂度?
发表于 2019-08-25 14:08:34 回复(0)
确实是D,因为第一次分出去是m,m+1, 第二次分出去是m,m+1,m+2,实际每次只需要比上一次多算一个问题。因此就是D
发表于 2020-03-21 23:23:50 回复(0)