黑马程序员技术交流社区

标题: 递归分析和File的应用 [打印本页]

作者: 辉大大    时间: 2015-7-29 20:39
标题: 递归分析和File的应用
首先,递归:是方法内部调用方法的现象

注意事项:递归一定要有出口,否则就是死递归;
          递归不要次数太多,否则就会内存溢出;


递归使用分析
   
   递归在使用中,一般需要if....else....语句

   思路:
      1、出口:一般用已知项作为出口;
      2、规律:寻找规律

  举例:如5!

  规律:5!= 5*4*3*2*1  =5*4!
        n! = n*(n-1)!

        方法:fun(n)= n!
  出口:1

public static int fun(int n){
        if (n = 1) {
                return 1;
        }else
                return n*fun(n-1)
}


/*
  需求:显示目录"e:\\"下以".java"为后缀的文件
       
        思路:
          1、创建封装目录
          2、获取该目录下的所有文件及文件夹的File数组
          3、遍历数组
          4、判断是否是目录
                是:继续从第2步开始 (递归:方法内调用方法)
                否:输出以".java"为后缀的文件

*/

class FileDemo {
        public static void main(String[] args) {
                File file = new File("e:\\");

                showFile(file);
        }

        public static void showFile(File file) {
               
                //获取该目录下的所有文件及文件夹的File数组
                File[] file1 = file.listFiles();

                //遍历数组
                for(File f : file1) {
                        if (f.isDirectory()) {
                                showFile(f);//递归
                        }else {
                                if(f.getName().endswith(".java")){
                                        Sysotem.out.println(f.getAbsolutePath());
                                }
                        }
                }
        }
}


//删除文件下的所有文件即目录
    public static void deleteFile(File file) {
        File[] file1 = file.listFiles();
        //if(file1 != null)
        for (File f : file1) {
                if (f.isFile()) {
                        System.out.println(f.getName+":"+f.delete());
                }else
                        deleteFile(file);
        }

        System.out.println(file.getName+":"+file.delete);
    }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2