【发布时间】:2014-03-30 07:10:57
【问题描述】:
对于我的递归方法的这一部分,我需要处理大于 2 的偶数长度字符串的情况(如我的基本情况所示)。我的问题是弄清楚如何让我的递归案例真正接近我的基本案例。我不确定我是否正确地执行了反转部分,因为由于基本情况从未被击中,我收到了 Stack Overflow 错误。 这是有问题的方法。 (我将在当前的“if”语句之后处理奇数字符串。我现在有“return null;”,所以我可以在没有奇数的情况下测试我的偶数情况。)
编辑: 示例输入:ABCDEF 示例输出:EBCDAF
public static String revEven(String inString)
{
String tempString = new String();
if (inString.length() <= 2)
return inString;
if (inString.length() == 3)
{
tempString += inString.charAt(2);
tempString += inString.charAt(1);
tempString += inString.charAt(0);
return tempString;
}
if (inString.length() % 2 == 0)
{
return revEven(inString.substring(0, inString.length() - 1) + inString.charAt(inString.length() - 1));
}
return null;
}
【问题讨论】:
-
"...当我收到 Stack Overflow 错误..." -- 哦,现在不要试图甜言蜜语...
-
哈哈,我希望我是。我明白为什么我会收到错误。与我当前的解决方案相比,我尝试处理的所有基本情况都没有意义。
-
java.lang.StackOverflowError 在最后一个 return 语句上。不过,我确实说过。我还说我明白为什么会这样。这是因为我输入到递归方法中的字符串永远不会变小,所以它永远不会遇到基本情况,导致我的方法永远调用自己。
标签: java string recursion reverse