對於遞歸方法的這部分,我需要處理大於2的偶數長度字符串(如我的基本情況所示)。我的問題是搞清楚如何讓我的遞歸案件實際上接近我的基本情況。我不知道我是否正確地執行了反轉部分,因爲基本情況從未被擊中,所以我得到堆棧溢出錯誤。 這是有問題的方法。 (我會在我目前的if語句之後處理奇數字符串,因爲我現在有「return null」,所以我可以在沒有奇數的情況下測試我的例子)。示例輸出: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;
}
「......我得到一個堆棧溢出錯誤。」 - 哦,不要試圖甜現在我們談談... – aliteralmind
哈哈,我希望我是。我明白爲什麼我會收到錯誤。我試圖接近基本案例的一切都比我目前的解決方案更不明智。 – coinbird
最後一個return語句中的java.lang.StackOverflowError。不過,我確實這麼說。我還說我明白了爲什麼會發生。這是因爲我輸入遞歸方法的字符串永遠不會變小,所以它從不碰到基本情況,導致我的方法永遠調用它自己。 – coinbird