下面是我的代码。我的问题是,如果我尝试在数组上使用该方法,我会得到一个 ArrayIndexOutOfBounds 异常,我不知道为什么。也许有人可以提供帮助。
public class Recursion {
public static void main(String[] args) {
int[] array = new int[] {3, 4, 7, 2, 6};
stepSum(array);
}
public static void stepSum(int[] numbers) {
if(numbers.length == 0) {
return;
} else if (numbers.length == 1) {
System.out.println(numbers[0]);
} else {
int[] sumNumbers = new int[numbers.length - 1];
for (int i = 0; i < numbers.length; i++) {
sumNumbers[i] = numbers[i] + numbers[i+1];
}
stepSum(sumNumbers);
}
for (int number : numbers) {
System.out.print(number + " ");
}
System.out.println();
}
}
答案 0 :(得分:2)
数字[i+1]
这将超过上次循环中的索引,因为 i
是最后一个有效索引。
答案 1 :(得分:0)
在你的 for 循环中用 sumNumbers.length 替换 numbers.length
因为 numbers.length 大于新的 sumNumbers.length,所以它最终总是比 sumNumbers.length 多执行一次迭代。这行不通。