反转数组的方法导致StackOverflowError

问题描述 投票:0回答:1

我尝试编写一个方法来反转数组,但是我总是得到一个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);
    }
}
java arrays methods reverse
1个回答
2
投票

您的功能基本上像:

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

您如何认为此递归将结束?正确的递归始终需要一个基本案例,一个可以终止递归的案例...

无论如何,您解决问题的方式不需要任何递归。然后在reverse() ...]中删除对reverse的呼叫


0
投票

反向方法应该返回int[],并且此数组应该是您的arr参数。无需递归。

© www.soinside.com 2019 - 2024. All rights reserved.