Java中的递归:I';I’我打印结果有问题

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);

下面是我的代码。我的问题是,如果我尝试在数组上使用该方法,我会得到一个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();
            
        }
        
    }
公共类递归{
公共静态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