我遇到一个问题,导致我的代码出现Stack Overflow Error。我试图在一个数组中找到一个数字,但我必须在递归函数中执行它,并给出该错误。
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;
}
如果你能帮助我,我将不胜感激。对不起,我的英语有点生疏了。
答案 0 :(得分:1)
你在递归调用线性之前错过了一个返回,不是吗?
return linear(array, num, indice + 1);
但是,我不认为Java会进行尾递归优化 (What is tail recursion?), 所以你必须适当增加大型数组的堆栈大小;)