java - 反转数组的方法导致 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);
}
}
解决方案
你的功能基本上是这样的:
reverse() {
...
reverse();
}
你认为这个递归将如何结束?一个正确的递归总是需要一个基本案例,一个可以终止递归的案例......
无论如何,您解决它的方式不需要任何递归。然后删除对reverse()
inside的调用reverse
...
推荐阅读
- r - 无法 install.packages('arrow') 读取镶木地板文件 (read_parquet)。任何其他方式来读取镶木地板文件或使用任何不同的库?
- githooks - 如何使用 husky 将部分分支名称添加到 git commit
- python - ImportError:无法从“传单”导入名称“app_settings”
- entity-framework - Assp.net Core exeption('无效的列名'ClassRoomClassId')
- networking - K3S Rancher - 基于 Debian 的 docker 映像无法正确解析 dns
- datetime - 如何在 bigquery 中获取活动信号的持续时间?
- android - 如何模拟使用 mockito 创建新对象的方法?
- asp.net-mvc - 如何从 Html.actionlink() 方法发送 javascript 对象?
- magento - 与所有子域共享公共购物车
- spring-security - 使用 Okta Spring Boot Starter 的自定义权限