首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >递归地将数组中的整数求和

递归地将数组中的整数求和
EN

Stack Overflow用户
提问于 2013-11-27 21:43:59
回答 10查看 65.1K关注 0票数 7

我有一个程序,我试图为类创建一个程序,它使用递归返回数组中所有整数的和。到目前为止,我的计划如下:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-11-27 21:47:53

解决方案比它看上去更简单,请尝试如下(假设数组的长度为非零):

代码语言:javascript
复制
public int sumOfArray(int[] a, int n) {
    if (n == 0)
        return a[n];
    else
        return a[n] + sumOfArray(a, n-1);
}

就这样说吧:

代码语言:javascript
复制
int[] a = { 1, 2, 3, 4, 5 };
int sum = sumOfArray(a, a.length-1);
票数 19
EN

Stack Overflow用户

发布于 2013-11-27 21:46:00

问题是a[n-1]是一个int,而sumOfArray需要一个int数组。

提示:您可以通过让sumOfArray接受数组和起始(或结束)索引来简化事情。

票数 6
EN

Stack Overflow用户

发布于 2013-11-27 21:46:40

代码语言:javascript
复制
a[n-1] 

是在n-1处得到int,而不是从0到n-1的数组。

试着使用

代码语言:javascript
复制
Arrays.copyOf(a, a.length-1);

相反,

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20253651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档