我尝试编写一个方法来反转数组,但是我总是得到一个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);
}
}
您的功能基本上像:
reverse() {
...
reverse();
}
您如何认为此递归将结束?正确的递归始终需要一个基本案例,一个可以终止递归的案例...
无论如何,您解决问题的方式不需要任何递归。然后在reverse()
...]中删除对reverse
的呼叫
反向方法应该返回int[]
,并且此数组应该是您的arr
参数。无需递归。