我一直在从事 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);
}

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

另外我想知道是否需要“charPos = fromPos”这一行。我可以在我的代码中使用 fromPos 还是会违反“传递引用不值”的事情?

最佳答案

您完全可以在整个代码中使用 fromPos。 Java 从来没有通过引用传递,你甚至没有改变 charPos 的值。

不清楚为什么您的最终 return 语句将 charPos 添加到递归调用的返回值中。为什么不只是:

return rIndexOf(ch, charPos + 1);

?毕竟,假设它在位置 3 处找到它 - 这将返回 3,所以您不想在上一次调用中将 2 添加到 3,然后将 1 添加到 5 并以 6 结束......

关于java - 有人可以改进 Java 中 indexOf 的递归实现吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7264871/

10-12 03:43