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;
}
}
添加回答
举报
