3 回答

TA貢獻1871條經驗 獲得超13個贊
這應該可以解決問題:
static String recursiveString(String str) {
return !str.equals("") ? recursiveString(str.substring(1)) + str.charAt(0) : str;
}
在您的代碼中,您并沒有減少字符串參數的長度,它始終是相同的輸入,所以基本上它進入了一個無限循環。如果我們在遞歸調用之后移動連接部分,那么每次遞歸調用的字符串都會變短,直到它為空,表示遞歸結束。

TA貢獻1856條經驗 獲得超5個贊
一個 Unicode 感知的遞歸反向
雖然其他答案向您展示了您出錯的地方以及如何編寫適用于基本 Unicode 字符的遞歸字符串反轉算法,但它們會為補充 Unicode 字符產生錯誤的結果。以下方法適用于所有 Unicode 字符:
static String recursiveReverse(String str) {
if (str.isEmpty())
return "";
int offsetToSecondCodePoint = str.offsetByCodePoints(0,1);
return recursiveReverse(str.substring(offsetToSecondCodePoint))
+ str.substring(0, offsetToSecondCodePoint);
}

TA貢獻1827條經驗 獲得超4個贊
public static void main(String[] args) {
String str = "Juhi";
System.out.println(recursiveString(str));
}
static String recursiveString(String str) {
return !str.equals("") ? recursiveString(str.substring(1) ) + str.charAt(0): str;
}
}
添加回答
舉報