递归地对数组中的整数求和

新手上路,请多包涵

我有一个程序,我正在尝试为使用递归返回数组中所有整数之和的类制作。到目前为止,这是我的程序:

 public class SumOfArray {

private int[] a;
private int n;
private int result;

    public int sumOfArray(int[] a) {

      this.a = a;
      n = a.length;

      if (n == 0)  // base case
      result = 0;
      else
          result = a[n] + sumOfArray(a[n-1]);

      return result;

   } // End SumOfArray method

} // End SumOfArray Class

但是我收到了三个相关的错误,我相信,但我不明白为什么它会找到一种 null 类型:

 SumOfArray.java:25: sumOfArray(int[]) in SumOfArray cannot be applied to (int)
    result = a[n] + sumOfArray(a[n-1]);
                    ^
SumOfArray.java:25: operator + cannot be applied to int,sumOfArray
    result = a[n] + sumOfArray(a[n-1]);
              ^
SumOfArray.java:25: incompatible types
found   : <nulltype>
required: int
    result = a[n] + sumOfArray(a[n-1]);
                  ^
3 errors

原文由 Maggie S. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 489
2 个回答

解决方案比看起来更简单,试试这个(假设一个长度为非零的数组):

 public int sumOfArray(int[] a, int n) {
    if (n == 0)
        return a[n];
    else
        return a[n] + sumOfArray(a, n-1);
}

像这样称呼它:

 int[] a = { 1, 2, 3, 4, 5 };
int sum = sumOfArray(a, a.length-1);

原文由 Óscar López 发布,翻译遵循 CC BY-SA 3.0 许可协议

问题是 sumOfArray a[n-1] int 一个 int

提示:您可以通过制作 sumOfArray 获取数组和开始(或结束)索引来简化事情。

原文由 NPE 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题