首页 > 解决方案 > 反转数组的方法导致 StackOverflowError

问题描述

我尝试编写一种方法来反转数组,但我总是得到一个 StackOverFlowError。有人可以帮忙吗?

这是我的代码:

public class Exercise4_2 {

    public static void main(String[] args) {
        int [] arr = {1, 3, 5, 7, 9};
        int result = reverse(arr);
        System.out.print(result);
    }

    static Integer reverse(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n/2; i++) {
            int temp = arr[i];
            arr[i] = arr[n-1-i];
            arr[n-1-i] = temp;
        }
        return reverse(arr);
    }
}

标签: javaarraysmethodsreverse

解决方案


你的功能基本上是这样的:

reverse() {
    ...
    reverse();
}

你认为这个递归将如何结束?一个正确的递归总是需要一个基本案例,一个可以终止递归的案例......

无论如何,您解决它的方式不需要任何递归。然后删除对reverse()inside的调用reverse...


推荐阅读