本帖最后由 眷恋之地 于 2014-2-11 00:39 编辑
- public static void print(StringBuilder str, int length)
- {
- StringBuilder strTemp = new StringBuilder();//每次递归局部变量strTemp都是一个新建的对象,里面都是空的
- if(length == 1)
- {
- str.append("1");
- }
- else
- {
- length--;
- print(str, length);
- //运行到这里时,str.toString()都为1。没有接收到递归中因str=strTemp产生的str的变化
- strTemp.append(str.toString() + length);//因为strTemp每次都是在上面新建的对象,都是空的,只是在这里添加了新的内容。
- str = strTemp;
- }
- System.out.println(str);
- }
- //加上了返回值,使得可以接收递归中因str=strTemp产生的str的变化
- public static StringBuilder print_2(StringBuilder str, int length)
- {
- StringBuilder strTemp = new StringBuilder();
- if(length == 1)
- {
- str.append("1");
- }
- else
- {
- length--;
- str = print_2(str, length);//接收递归中因str=strTemp产生的str的变化
- strTemp.append(str.toString() + length);
- str = strTemp;
- }
- System.out.println(str);
- return str;
- }
- //不添加新的变量strTemp
- public static void print_3(StringBuilder str, int length)
- {
- if(length == 1)
- {
- str.append("1");
- }
- else
- {
- length--;
- print_3(str, length);
- str.append(length);
- }
- System.out.println(str.toString());
- }
- //不使用递归实现
- public static void print_4(StringBuilder str, int length)
- {
- int index = 1;
- while(index<=length)
- {
- if(index==1)
- str.append(1);
- else
- str.append(index-1);
- System.out.println(str.toString());
- index++;
- }
- }
复制代码
|