二进制功率误差

时间:2016-08-09 19:37:42

标签: java

给定整数n和k,找到n ^ k的值。我试图递归地做这个,但我不明白我哪里出错了。有人可以帮忙吗?

00891

1 个答案:

答案 0 :(得分:1)

错误在于n % 2 != 0时的情况。在此,您必须返回binaryPower(n, k - 1) * n;,但返回binaryPower(n, k - 1);

目前,如果我们以3 3 为例 3 3 - > 3 2 - > 9 1 - > 9 0 - > 1

应该是:
3 3 - > 3 2 * 3-> 9 1 * 3 - > 9 0 * 3 * 9-> 27

更改代码:

int binaryPower(int n, int k) {

     if (k == 0) {
         return 1;
     }

     if (k % 2 == 0) {
         return binaryPower(n * n, k / 2);
     }

     return binaryPower(n, k - 1) * n;  // Changed
 }