给定整数n和k,找到n ^ k的值。我试图递归地执行此操作,但我无法理解我要去哪里。有人可以帮忙吗?

  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 % 2 != 0的情况。在这里,您必须返回binaryPower(n, k - 1) * n;,但是您返回binaryPower(n, k - 1);

目前,以33为例。
33-> 32-> 91-> 90-> 1

它应该是:
33-> 32 * 3-> 91 * 3-> 90 * 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
 }

关于java - 二进制功率误差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38859094/

10-10 18:11