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

标签 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);
}

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

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

最佳答案

您可以绝对在您的代码中一直使用fromPos。 Java 从未通过引用传递,您甚至都不会更改 charPos 的值。

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

return rIndexOf(ch, charPos + 1);

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

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

相关文章:

java - 如何使用 Thymeleaf 制作一个简单的 Java 应用程序(不使用 Spring)

java - 从 Java 中的 XML 中删除 XML header

java - 如何将混合应用程序的当前 View 转换为位图

c++ - 为什么删除此return语句会影响整个递归函数的结果?

algorithm - DBSCAN算法(递归逻辑)

php - 是否可以仅使用 PHP(无 JS)构建可折叠的 TreeView 列表

java - Swing 应用程序全局模式

java - 如何在 Intellij 中以 Debug模式启动 Jboss 5.1.0.GA 以进行远程调试

java - 递归方法 : why do I need return statement?

Java:有限递归中的 Stackoverflow