java - 二进制幂错误

标签 java

给定整数 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/

相关文章:

java.lang.ClassCastException : java. lang.String 无法转换为 [Ljava.lang.Object;当尝试通过 Hibernate 将列值获取到列表时

java - JFrame 按钮在将其声明为静态变量时表现得很奇怪

java - 我收到错误 The method setPromptText(String) is undefined for the type TextField

java - 带注解的依赖注入(inject)

java - 在 JFrame 中显示外部文件内容的问题

javascript - Jersey FormData,上传多个文件数据

java - void 方法的单元测试应该是什么样子?

java - 是否可以通过编程方式控制 set-jaxb-validation-event-handler?

java - 为什么我的 GUI 没有加载到构造函数上?

java - 无法调用网络服务