首页 > 试题广场 >

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!)
不是O(2^n)么,调用过程是一个高度为n的二叉树
发表于 2019-04-11 20:58:53 回复(1)
注意有两个子递归,可以将第一个单独看,是o(n)的时间复杂度,那么还有一个递归就是n*f(n-1),所以就是n!
发表于 2019-03-20 23:47:12 回复(0)
可以想下树的先序遍历的递归算法怎么写,树高h=logn。反之,n=2^h;
编辑于 2019-08-24 23:44:15 回复(0)
可以写个程序跑一下,时间复杂度为O(2^n),选C
发表于 2019-08-06 16:31:32 回复(0)