递归地计算base到n次幂的值

kac*_*ous 4 java recursion

以下是我的解决方案:

 public int powerN(int base, int n) {

    if(n == 0)
       return 1;

    else if(n % 2 == 0)
       return base * base;

    else
       return base * powerN(base, n-1); 

 }
Run Code Online (Sandbox Code Playgroud)

但是,如果n> 3,则此功能不起作用.例如,powerN(2,4)产生4和powerN(2,5)产生8.我知道存在一个更简单的解决方案,但它让我困惑,我无法弄清楚为什么这不能正常工作.

Jos*_*Lee 5

else if(n % 2 == 0)
   return base * base;
Run Code Online (Sandbox Code Playgroud)

这个位是不正确的 - 它返回任何偶数幂的平方,而不仅仅是2.看起来你正在尝试实现平方和乘法优化.因此,如果你想计算powerN(base, n),你可以利用n甚至是什么的事实进行递归调用?你会通过哪些新价值在basen?使用b 2 n =(b 2)n的身份.