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