Java 中的递归:我在打印结果时遇到问题

时间:2021-03-10 23:16:53

标签: java recursion

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

2 个答案:

答案 0 :(得分:2)

<块引用>

数字[i+1]

这将超过上次循环中的索引,因为 i 是最后一个有效索引。

答案 1 :(得分:0)

在你的 for 循环中用 sumNumbers.length 替换 numbers.length

因为 numbers.length 大于新的 sumNumbers.length,所以它最终总是比 sumNumbers.length 多执行一次迭代。这行不通。