递归
注意:
- 递归不能没有结束条件,否则就会在栈内存中一直调用自己,这个方法就会一直压入栈空间出现栈内存异常溢出的异常
- 递归的次数也不能太多,否则也会出现栈内存溢出
- 构造方法禁止使用递归,编译报错,构造方法是创建对象的,一直递归回导致内存中有无数对象
下面是递归计算累加的例子:
递归遍历获取文件
package cn.zhuobo.day13.recurison;
import java.io.File;
public class Demo01Recurison {
public static void main(String[] args) {
File file = new File("/home/zhuobo/Desktop/a");
getAllFile(file);
}
public static void getAllFile(File dir) {
System.out.println(dir);// 打印要遍历的问价夹
File[] files = dir.listFiles();
for (File file : files) {
if(file.isDirectory()) {// 如果十个目录,那么就递归接着遍历
getAllFile(file);
}
else {
// 获取其中以txt结尾的文件
//System.out.println(file);
String name = file.getName();
// String name = file.getPath();
// String name = file.toString();
if(name.endsWith(".txt")){
System.out.println(file);
}
}
}
}
}
a目录的文件:
运行结果
/home/zhuobo/Desktop/a/c/c.txt
/home/zhuobo/Desktop/a/b/b.txt
/home/zhuobo/Desktop/a/a.txt