我有一个程序,我试图为类创建一个程序,它使用递归返回数组中所有整数的和。到目前为止,我的计划如下:
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发布于 2013-11-27 21:47:53
解决方案比它看上去更简单,请尝试如下(假设数组的长度为非零):
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);发布于 2013-11-27 21:46:00
问题是a[n-1]是一个int,而sumOfArray需要一个int数组。
提示:您可以通过让sumOfArray接受数组和起始(或结束)索引来简化事情。
发布于 2013-11-27 21:46:40
a[n-1] 是在n-1处得到int,而不是从0到n-1的数组。
试着使用
Arrays.copyOf(a, a.length-1);相反,
https://stackoverflow.com/questions/20253651
复制相似问题