递归
    递归本质是方法的调用一层套一层的去执行,例子:例如我们去盖楼房。我们给的指令是让这个人去盖第五层楼,但是第五层楼没有办法直接去盖,这时候就需要用到递归,第五层的建筑师可以去找一个人让他去盖第四层,第四层的人也需要找第三层的人去先盖好,同理需要一直找到第一层的人先去盖好。这就是递归的原理。需要一层一层的去调用。
    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文件遍历了解关键字的使用。