有人可以改进Java中indexOf的递归实现吗?

Cow*_*Zow 4 java recursion

我一直致力于Java夏季任务,并且在Java中递归实现indexOf方法存在问题.这是我到目前为止:

public int rIndexOf(char ch, int fromPos)
{
    int charPos = fromPos;

    if (charPos >= myString.length() || myString.equals(""))
        return -1;
    else if (myString.charAt(charPos) == ch)
        return charPos;
    else
        return charPos + rIndexOf(ch, charPos + 1);
}
Run Code Online (Sandbox Code Playgroud)

我似乎得到了完全错误的值,所以我只能想象它是增量或计数的问题,但是我的代码每次都不会将charPos增加+1吗?或者它与字符的ASCII值有关?

此外,我想知道是否有必要使用"charPos = fromPos"这一行.我可以在整个代码中使用fromPos,还是会违反"传递引用而非价值"的事情?

Jon*_*eet 6

绝对可以一直使用fromPos你的代码.Java从未通过引用传递,你甚至都没有改变它的价值charPos.

目前还不清楚为什么你的最终return语句会增加 charPos递归调用的返回值.为什么不是这样:

return rIndexOf(ch, charPos + 1);
Run Code Online (Sandbox Code Playgroud)

?毕竟,假设它在第3位找到它 - 那将返回3,所以你不想在前一次调用中将3添加到3,然后在5中加1,最后以6 ...