zoukankan      html  css  js  c++  java
  • 递归

    递归

      概述
    •   递归:指的是当前方法调用自己的一种现象
    •        递归的分类

        • 递归分为两类:直接递归和间接递归
        • 直接递归: 称为方法自身调用自己的情况
        • 间接递归: 可以归结为: 方法A调用了方法B,方法B调用了方法C,方法C调用了方法A
    • 注意事项:

      • 递归一定要有边界条件(条件限定) , 保证递归能够停下来,否则会发生栈内存溢出.
      • 在递归放纵虽然有限定条件,但是递归的次数也不能太多,否则也会发生栈内存溢出现象
      • 构造方法禁止递归

    使用递归打印多级目录

    public static void main(String[] args) {
            // 找到Hello文件的路径
            File file = new File("C:\Users\admin\Desktop\Hello");
            //调用getAllFiles()
            getAllFiles(file);
        }
    
        /*
            定义一个方法,参数传递File类型的目录
            方法中要对目录进行遍历
         */
        public static void getAllFiles(File file) {
            // 表明file此时是一个目录
            System.out.println(file);
            //首先先获取到它直接子目录和直接子文件
            File[] files = file.listFiles();
            // 遍历files目录
            for (File f : files) {
                // 判断如果得到的f是一个目录,需要再次遍历
                if (f.isDirectory()) {
                    // 表明f是一个目录,则继续遍历这个目录
                    //getAllFiles方法就是获取所有的文件,参数传递的刚好是目录。所以直接调用getAllFiles:递归(自己调用自己)
                    getAllFiles(f);
                } else {
                    // 此时f不是一个目录,肯定是一个文件
                    System.out.println(f);
                }
            }
        }

    文件过滤器优化

    java.io.FileFilter是一个接口,是File的过滤器,该接口的对象可以传递给File类的listFiles(File Filter) 作为参数,接口中只有有个方法:

    boolean accept(File pathname) : 测试pathname是否应该包含在当前的File目录中,

    如果符合,返回true.

  • 相关阅读:
    大整数模拟
    MSSQL存储过程中获取记录集并循环操作一例
    about协议的妙用
    C#基础概念二十五问
    很完美的JS判断日期函数
    asp.net C# FileUpload 控件如何判断文件名的后缀
    c++中指针学习的两个绝好例子
    ASP.net性能优化总结
    C++指针
    JS中的undefined,null,"",0和false
  • 原文地址:https://www.cnblogs.com/wazesx2580/p/14135171.html
Copyright © 2011-2022 走看看