Java 递归溢出
我的代码中有一个导致堆栈溢出错误的问题。我试图在一个数组中找到一个数字,但我必须在递归函数中找到它,并给出了错误Java 递归溢出,java,stack-overflow,Java,Stack Overflow,我的代码中有一个导致堆栈溢出错误的问题。我试图在一个数组中找到一个数字,但我必须在递归函数中找到它,并给出了错误 public static int linear(int[] array, int num, int indice) { if (indice < array.length-1) { if (array[indice] == num) { return indice; } else { oc
public static int linear(int[] array, int num, int indice) {
if (indice < array.length-1) {
if (array[indice] == num) {
return indice;
} else {
ocurrencias++;
linear(array, num, indice + 1);
}
}
return -1;
}
公共静态int-linear(int[]数组、int-num、int-indice){
如果(标记<数组长度-1){
if(数组[indice]==num){
回归指数;
}否则{
眼科++;
线性(数组、数字、标记+1);
}
}
返回-1;
}
如果你能帮助我,我将不胜感激。对不起,我的英语有点生疏了 在递归调用linear之前,您缺少一个返回,不是吗
return linear(array, num, indice + 1);
然而,我不认为Java会进行尾部递归优化
(),
因此,对于大型阵列,必须适当增加堆栈大小;) 你的阵列有多大?如果您遇到stackoverflow,只需使用一个简单的for循环。如果必须使用递归,则需要对数组进行排序并使用二进制搜索算法。数组的长度是多少?数组的大小由用户先插入。我必须使用线性搜索来查找数字,但使用递归函数,我在“线性”之前有返回语句,但也会出现错误。变量indice从0开始,并应递增,直到它小于array.length-1。如果阵列有100个位置,则指示器应在99处停止。