首页 > 其他 > 详细

有关递归练习

时间:2014-03-01 19:59:25      阅读:550      评论:0      收藏:0      [点我收藏+]
  • 求1到某个数的和
public static int getSum(int num) {
        if (1 == num)
            return 1;
        return num+getSum(num-1);
    }
  • 遍历某个目录下的所有文件
bubuko.com,布布扣
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());
            }

        }

    }
bubuko.com,布布扣
  • 若是在不使用递归,遍历目录下所有子目录和包含的文件

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

bubuko.com,布布扣
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());
                }
            }
        }
    }
bubuko.com,布布扣

 

bubuko.com,布布扣
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();
    }

}
bubuko.com,布布扣

有关递归练习,布布扣,bubuko.com

有关递归练习

原文:http://www.cnblogs.com/bbthome/p/3574593.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!