我一直在从事 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/