首页 > 其他 > 详细

递归及递归的使用

时间:2021-02-12 08:08:37      阅读:25      评论:0      收藏:0      [点我收藏+]

目录
1. 递归:方法自己调用自己

2. 在Java中实现递归打印文件夹

递归:方法自己调用自己

1.递归的分类:

  • 递归分为两种,直接递归和间接递归。
  • 直接递归称为方法自身调用自己。
  • 间接递归可以A方法调用B方法,B方法调用c方法,c方法调用A方法。

2.注意事项:

  • 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
  • 在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
  • 构造方法,禁止递归

3.递归的使用前提:

  • 当调用方法时方法的主体不变,每次调用方法的参数不同,可以调用递归

在Java中实现递归打印文件夹

1.实现方法

/**
     * 方法名:show01
     * 返回值类型:void
     * 参数列表:File file
     */
/private static void show01(File file) {
        //打印被遍历的目录名称,打印文件夹
        System.out.println(file); 
        //调用listFiles()方法,用File类型的数组来接收listFiles()方法的返回值
        File[] files = file.listFiles();
        //使用增强for遍历数组
        for (File f : files) {
            //关键if判断,如果是一个文件夹则会再从开头来一遍,除非不是文件夹才会else下打印  
            if (f.isDirectory()){
                show01(f);
            }else {
                //打印文件,不是打印文件夹哦
                System.out.println(f);
            }
        }
}

2.主方法

public static void main(String[] args) {
        File f1 = new File("D:\\test");
        show01(f1);
    }

3.最终效果

D:\test
D:\test\a1
D:\test\a1\a1a1
D:\test\a1\a1a1\com
D:\test\a1\a1a1\com\secret.txt
D:\test\b2
D:\test\b2\b2.txt
D:\test\b2\well
D:\test\c3
D:\test\d4
D:\test\d4\wuwuwu.mp4

4.实现文件的搜索(匹配)

/**
     * 方法名:show01
     * 返回值类型:void
     * 参数列表:File file
     */
    private static void show01(File file) {
//        System.out.println(file); //打印被遍历的目录名称
        File[] files = file.listFiles();
        for (File f : files) {
            if (f.isDirectory()){
                show01(f);
            }else {
                //关键判断,调用toString()方法再调用String类的endWith方法匹配文件的后缀
                if (f.toString().endsWith(".txt")){
                    System.out.println(f);
                }

            }
        }
    }
}

5.文件搜索结果

D:\test\a1\a1a1\com\secret.txt
D:\test\b2\b2.txt

其他文章:

Deepin注意事项

递归及递归的使用

原文:https://www.cnblogs.com/liuhengzhi/p/14398164.html

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