首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

分析停这个递归小程序的执行过程

2011-12-21 
分析下这个递归小程序的执行过程我自己编写的一个递归小新程序,逆序打印一个字符串.源码如下:public class

分析下这个递归小程序的执行过程
我自己编写的一个递归小新程序,逆序打印一个字符串.源码如下:

public class Recursion {
public static String writeBackWard(String s) {
String temp=new String("");
if (s.length() != 0) {
temp += s.substring(s.length()-1);
s = s.substring(0,s.length()-2);
writeBackWard(s);

return temp;
}

public static void main(String[] args) {
Recursion recur = new Recursion();
System.out.println(recur.writeBackWard("hello"));
}
}

我自认为应该没错了,但是在调试的时候,始终说我的数组下标有问题,谁帮我分下下,到底是哪儿出问题了.谢谢了.

E:\>java Recursion
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind
ex out of range: -1
  at java.lang.String.substring(Unknown Source)
  at Recursion.writeBackWard(Recursion.java:8)
  at Recursion.writeBackWard(Recursion.java:9)
  at Recursion.writeBackWard(Recursion.java:9)
  at Recursion.main(Recursion.java:16)

E:\>

[解决办法]

Java code
if (s.length() != 0) {//问题在这,你的条件是当s的长度不为零时进入下面的代码    temp += s.substring(s.length()-1);//这里是没有问题    s = s.substring(0,s.length()-2);//但是这里,当s的长度为1时,这里就是 s = s.substring( 0, -1)了,当然会错了    writeBackWard(s);} 

热点排行