zoukankan      html  css  js  c++  java
  • 有关递归练习

    • 求1到某个数的和
    public static int getSum(int num) {
            if (1 == num)
                return 1;
            return num+getSum(num-1);
        }
    • 遍历某个目录下的所有文件
    public static void getDirAndFile(File dir) {
            System.out.println("dir:" + dir);
            File[] files = dir.listFiles();
    
            for (File file2 : files) {
                if (file2.isHidden()) {
                    continue;
                }
                if (file2.isDirectory()) {
                    getDirAndFile(file2);
                } else {
                    System.out.println("file: " + file2.getName());
                }
    
            }
    
        }
    • 若是在不使用递归,遍历目录下所有子目录和包含的文件

         思路:
      * 1、可以对每个目录for循环,不过层级过多,容易死掉
      * 2、每遍历到一个目录,不对其继续遍历,而是先存储到容器中
      *    相当于把所有目录(无论是否同级)都存储起来
      * 3、遍历容器时就是取到目录,对目录继续遍历即可
      * 4、从容器中遍历目录,发现内部还有目录,则一样存储到容器中
      * 5、只要不断遍历这个容器就可以

    public static void getAllFile(){
            //队列存储目录
            Quere<File> quere =new Quere<File>();
            
            File dir =new File("F:\");
            File[] files = dir.listFiles();
            System.out.println("----------------"+dir+"---------------");
            for (File file : files) {
                if(file.isDirectory()&&!file.isHidden()){
                    quere.myAdd(file);
                }else{
                    System.out.println(file.getName());
                }
            }
            //遍历队列中的目录,若内部还有目录,则存储到队列中
            //循环遍历队列,直到为空
            while(!quere.isNull()){
                File sub_dir = quere.myGet();
                System.out.println("--------------"+sub_dir+"-----------------");
                File[] sub_Files = sub_dir.listFiles();
                for (File file : sub_Files) {
                    if(file.isDirectory()){                    
                        quere.myAdd(file);
                    }else{
                        System.out.println(file.getName());
                    }
                }
            }
        }
    class Quere<T>{
        
        private LinkedList<T> link;
        public Quere(){
            
            link =new LinkedList<T>();
            
        }
        
        public void myAdd(T t){
            
            link.addFirst(t);
        }
    
        public T myGet(){
            return link.removeLast();
        }
        
        public boolean isNull(){
            
            return link.isEmpty();
        }
    
    }
  • 相关阅读:
    eclipse中文乱码
    学习进度(7)
    校园管家(Android开发团队项目)NABCD
    NABCD(团队项目)
    android studio连接真机大概问题
    01梦断代码阅读笔记
    学习进度(6)
    android studio学习(一)
    地铁出行系统1.0
    学习进度(4)
  • 原文地址:https://www.cnblogs.com/bbthome/p/3574593.html
Copyright © 2011-2022 走看看