递归
递归本质是方法的调用一层套一层的去执行,例子:例如我们去盖楼房。我们给的指令是让这个人去盖第五层楼,但是第五层楼没有办法直接去盖,这时候就需要用到递归,第五层的建筑师可以去找一个人让他去盖第四层,第四层的人也需要找第三层的人去先盖好,同理需要一直找到第一层的人先去盖好。这就是递归的原理。需要一层一层的去调用。
public void BuildHouse(int floor){//盖房子
//递归,了解递归的规则,判断语句必须写对,要不很容易造成栈内存溢出异常
//判断当前的floor是否为1 若不是找一个别人将之前的楼层盖好
if (floor>1){
this.BuildHouse(floor-1);
}
System.out.println(“盖到第”+floor+”层了”);
}
利用递归进行文件夹的遍历
首先判断file是否是一个文件夹,文件夹内是否有元素,需要最后一个人去做
获取file的子元素,file==null证明是一个文件,file!=null 证明是一个文件夹,如果文件夹内length!=0证明这个文件夹并不是空的
public void showFile(File file){
//首先获取file的所有子元素
File[] files = file.listFiles();
//判断file是否是一个文件夹,文件夹里是否有元素,是否是一个文件
if (files!=null && files.length!=0){//证明是一个文件并且文件内有元素
for (File f : files){
this.showFile(f);
}
}
System.out.println(file.getAbsolutePath());
}
}
找到文夹之后进行遍历。
总结:
了解递归和循环的不同之处,递归执行会调用别的方法,当前的方法会停在调用方法这,一层一层的执行。
io文件遍历了解关键字的使用。