递归溢出

时间:2013-12-04 18:51:58

标签: java stack-overflow

我遇到一个问题,导致我的代码出现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;
}

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

1 个答案:

答案 0 :(得分:1)

你在递归调用线性之前错过了一个返回,不是吗?

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

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