Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 递归溢出_Java_Stack Overflow - Fatal编程技术网

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处停止。