【发布时间】:2019-05-12 17:05:17
【问题描述】:
当我使用递归方法反转字符串时,它给了我 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;
}
}
【问题讨论】:
-
除了
str.substring(1) + str.charAt(0),你永远不会传递任何东西,所以基本情况永远不会正确(除非你传入一个空的String开始)并且递归永远不会停止 -
这样简单的错误很容易通过使用调试器、逐步执行代码并检查变量值来解决。尽快学会使用你的调试器。这真的不难。或者至少在代码中添加 println() 语句。
-
这样做有一个警告。它不适用于所有可能的 Unicode 字符。见dzone.com/articles/the-right-way-to-reverse-a-string-in-java
标签: java string recursion reverse