Java中的递归:I';I’我打印结果有问题
下面是我的代码。我的问题是,如果我尝试在数组上使用该方法,我会得到一个ArrayIndexOutOfBounds异常,我不知道为什么。也许有人能帮忙Java中的递归:I';I’我打印结果有问题,java,recursion,Java,Recursion,下面是我的代码。我的问题是,如果我尝试在数组上使用该方法,我会得到一个ArrayIndexOutOfBounds异常,我不知道为什么。也许有人能帮忙 public class Recursion { public static void main(String[] args) { int[] array = new int[] {3, 4, 7, 2, 6}; stepSum(array);
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();
}
}
公共类递归{
公共静态void main(字符串[]args){
int[]数组=新的int[]{3,4,7,2,6};
步和(数组);
}
公共静态无效步和(整数[]个){
如果(number.length==0){
返回;
}else if(number.length==1){
System.out.println(数字[0]);
}否则{
int[]sumNumbers=新的int[numbers.length-1];
for(int i=0;i
数字[i+1]
这将超过循环最后一次的索引,因为i
是最后一个有效索引
数字[i+1]
这将超过上次通过循环时的索引,因为
i
是最后一个有效索引。在for循环中,将numbers.length替换为sumNumbers.length
因为numbers.length大于新的sumNumbers.length,所以它最终总是比sumNumbers.length多进行一次迭代。这不起作用。在for循环中将numbers.length替换为sumNumbers.length
因为numbers.length大于新的sumNumbers.length,所以它最终总是比sumNumbers.length多进行一次迭代。这行不通。
sumNumbers[i]=numbers[i]+numbers[i+1]代码>这必须产生一个越界错误,因为i+1必须超出数组的长度。也许您打算使用sumNumbers.length
作为i
的边界,而不是numbers.length
?sumNumbers[i]=numbers[i]+numbers[i+1]代码>这必须产生一个越界错误,因为i+1必须超出数组的长度。也许您想使用sumNumbers.length
作为i
的边界,而不是numbers.length
?