java - 整数数组的除法和

标签 java arrays algorithm

我编写了以下程序,使用 Java 中的分治递归算法求所有整数的总和:

但不知何故,总和不正确。

public class DivideAndConquerSum {
 public static void main(String[] args) {
    int[] arr = new int[]{2, 3, 4, 5};
    System.out.println(calculateRecursiveSum(arr, 0, arr.length));
  }
  static long sum = 0;
  static long calculateRecursiveSum(int[] arr, int low, int high) {
    if (high == low) {
      return arr[0];
    } else {
      int mid = (high + low) / 2;
      sum = calculateRecursiveSum(arr, low, mid) +
            calculateRecursiveSum(arr, mid + 1, high);
    }
    return sum;
  }
}

任何人都可以让我知道代码中有什么问题来解决它吗?在这种情况下仅假设正整数。

最佳答案

您的方法基本上会重新计算 mid,因此您需要返回该点的值。它更适合二分查找。但进行以下更改,它就会起作用。

       static long calculateRecursiveSum(int[] arr, int low, int high) {
          if (high == low) {
                return 0;
            }
            int mid = (high + low) / 2;
            return arr[mid] + calculateRecursiveSum(arr, low, mid) + 
                      calculateRecursiveSum(arr, mid+1, high);
       }

关于java - 整数数组的除法和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60726116/

相关文章:

算法 - 组合和排列

java - JBoss 部署在 Linux 上抛出 'java.util.zip.ZipException: error in opening zip file'?

java - 如何防止wrap_content中的 View 消失

java - 使用 split(regex) Java 拆分字符串时遇到问题

java - 使 BoxLayout 将组件移动到顶部,同时从左到右堆叠

javascript - 引用 JSON (Javascript) 对象的元素

algorithm - 在有向无环加权图中查找前 3 条最长路径

arrays - Scala 二维数组按主列和辅助列排序

ios - Apple swift 2.1 中的数组升级

java - 如何在不忽略拼写错误的情况下通过相似性比较字符串?