我已经引用Whats the best way to recursively reverse a string in Java?作为解决方案,但我的解决方案与我不理解的正确解决方案之间存在细微差别。
我试图通过命令行反转args中的字符串。这是我反转String的递归方法(几乎完全相同)。但是,我遇到了StackOverflowException。我想知道为什么会这样?是因为我的方法是静态的,而他们的方法不是吗?
public static String reverse(String word) {
if (word.length() == 1) {
return word;
} else {
return reverse(word.substring(1) + word.charAt(0));
}
}
答案 0 :(得分:3)
每次调用reverse时,字符串的长度都不会改变。如果您将return语句更改为:
return reverse(word.substring(1)) + word.charAt(0);
每次调用reverse时,单词的长度都会缩短一个字符。
答案 1 :(得分:0)
public String reverseString(String str) {
if (str.length() == 1) {
return str;
} else {
reverse += str.charAt(str.length() - 1)
+ reverseString(str.substring(0, str.length() - 1));
return reverse;
}
}