我有一个在我的代码上出现堆栈溢出错误的问题。我试图在一个数组中找到一个数字,但是我必须在一个递归函数中这样做,并给出该错误。

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;
}


如果您能帮助我,我将不胜感激。对不起,我的英语有点生锈。

最佳答案

在递归调用linear之前,您错过了回报,是吗?

return linear(array, num, indice + 1);


但是,我不认为Java会进行尾递归优化
What is tail recursion?),
因此,您必须为大型数组适当增加堆栈大小;)

08-05 05:06