黑马程序员技术交流社区
标题: 递归的疑问 [打印本页]
作者: tangxiaobo1991 时间: 2014-3-31 16:54
标题: 递归的疑问
函数递归结束后,成员变量的值会恢复吗?例如下面的例子:level值如果不恢复则每一次调用后level 的值一直累加,就不能按照层次将文件打印出来了阿!
package iotest;
import java.io.*;
public class FileTestDemo5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f=new File("/Users/yangli/Documents/");
getNames(f,0);
}
public static String getLevel(int level)
{
StringBuilder sb=new StringBuilder();
for(int x=0;x<level;x++)
sb.append(" ");
return sb.toString();
}
public static void getNames(File f,int level)
{
System.out.println(getLevel(level)+f);
level++;
//System.out.println(" ");
File[] files=f.listFiles();
for(File f1:files)
{
if(f1.isDirectory())
getNames(f1,level);
System.out.println(f1);
//level=0;
}
}
}
希望大神救助!!这里的level值应该会越来越大阿,那还怎么将文件按照层次分类打印出来呢?
作者: doyxy 时间: 2014-3-31 18:27
getLevel是普通方法,没有递归,
递归的是getNames,也就是在一个方法内又调用本身的方法
作者: shi0000 时间: 2014-4-2 11:30
在每层开始时将level的值初始化为0,即在for循环中,每次打印一层后将level的值重新赋值为0
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |