当我使用递归方法反转字符串时,它给了我stackOverflow错误。
public class ReverseString {
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;
}
}
最佳答案
这应该可以解决问题:
static String recursiveString(String str) {
return !str.equals("") ? recursiveString(str.substring(1)) + str.charAt(0) : str;
}
在您的代码中,您并没有减少string参数的长度,它始终是相同的输入,因此基本上它正在进入无限循环。如果我们在递归调用之后移动串联部分,则每个递归调用的字符串都会更短,直到它为空,这表明递归结束。