由于某种原因,当字符串长度为零时,它不会出现在while循环中.有人可以帮我吗?
static String str1 = "";
public static void reverse(String str) {
while (str.length() > 0) {
str1 = str1 + str.charAt(str.length() - 1);
StringBuffer str_buf = new StringBuffer(str);
str = str_buf.deleteCharAt(str.length() - 1).toString();
reverse(str);
}
System.out.println("String is " + str1);
}
解决方法:
用if替换
if(str.length()>0)
更新:
失败的原因是,在str.length()变为0之后,它会到达递归的底部,并且控制返回到“更高”级别,其中str.length()仍为1.因此它再次调用自身.
因此,在while达到0之后,它将在1和0之间连续循环.
标签:java,while-loop,string,recursion
来源: https://codeday.me/bug/20190825/1717774.html