分析功率递归函数

时间:2013-11-07 20:23:22

标签: java recursion

我想编写功率递归函数,它的分析是o(n): 这是我的想法 这是真的吗? 或者,如果这个代码的分析不是o(n),任何人都可以帮助我改变它以使其更好吗? 提前谢谢

  power(int x , int n)
  {
      if(n==0)
        return 1;
      else
        return x*power(x,n-1);
  }

5 个答案:

答案 0 :(得分:1)

有两个问题:

  1. N的幂为0是1.这必须是常数O(1)。
  2. N的幂为1。这也必须是常数O(1)。
  3. 之后,代码应该可以工作。它将在线性时间内表现为功率,因此它将为O(k)。

答案 1 :(得分:1)

此方法为O(k),而不是O(n),因为它将执行k递归调用。此外,k的基本案例0应返回1,而不是n

答案 2 :(得分:1)

这是O(n)时间,因为你从输入n向下计数到n为0。

答案 3 :(得分:1)

你正在递归地调用你的函数“k + 1”次。电源示例(10,3),您可以进行以下函数调用

power(10,3)  -
power(10,2)   |  k+1 times
power(10,1)   |
power(10,0)  -

因此,复杂性是O(k)而不是O(n)!

答案 4 :(得分:1)

你正在调用你的函数“k”,它的上限与它的下限匹配。所以我认为这是Theta(k)