• IO—》递归


    递归的概述

    递归,指在当前方法内调用自己的这种现象

    public void method(){
        System.out.println(“递归的演示”);
        //在当前方法内调用自己
        method();
    }

    递归分为两种,直接递归和间接递归。

    直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。

    实例:

    ①计算1-n之间的和,使用递归完成

    public class demo4 {
        //递归:要运行的方法主体不变,而参与运行的方法参数会变
        //递归必须要有一个出口,否则程序没有意义
        public static void main(String[] args) {
            System.out.println(getnum(1000));
        }
        //计算1-100和,用递归做
        public static int getnum(int n){
            if(n==1){
                return 1;
            }
            return n+getnum(n-1);
        }
        //3+getnum(2)
        //    2+getnum(1)
        //         1
        //最终赋值给调用者,往上一直传给调用者
    }

    ②递归打印所有子目录中的文件路径

    public class FileDemo2 {
        public static void main(String[] args) {
            File file = new File("d:\test");
            getFileAll(file);
        }
        //获取指定目录以及子目录中的所有的文件
        public static void getFileAll(File file) {
            File[] files = file.listFiles();
            //遍历当前目录下的所有文件和文件夹
            for (File f : files) {
                //判断当前遍历到的是否为目录
                if(f.isDirectory()){
                    //是目录,继续获取这个目录下的所有文件和文件夹
                    getFileAll(f);
                }else{
                    //不是目录,说明当前f就是文件,那么就打印出来
                    System.out.println(f);
                }
            }
        }
    }

    搜索指定目录中的.java文件(含子目录)

    public class myfl implements FileFilter{
    
        @Override
        public boolean accept(File pathname) {
            //如果是文件夹则不进行过滤,直接加到File数组中
            if(pathname.isDirectory()){
                return true;
            }
            return pathname.getName().toLowerCase().endsWith(".java");
        }
    
    }
    //找到指定目录下的所有指定文件类型的文件
    public class demo5 {
        public static void main(String[] args) {
            File file=new File("e:\test");
            getallfile(file);
        }
        public static void getallfile(File file){
            File[] files=file.listFiles(new myfl());
            for(File f:files){
                if(f.isDirectory()){
                    getallfile(f);
                }else{
                    System.out.println(f);
                }
            }
        }
    }

    ④计算n!

    public class demo6 {
        public static void main(String[] args) {
            System.out.println(getnum(20));
        }
        public static long getnum(int n){
            if(n==1){
                return 1;
            }
            return n*getnum(n-1);
        }
    }
  • 相关阅读:
    axure10(原型设计工具)下载地址(包含汉化包和注册机)
    注册微信公众号及微信认证流程
    三款免费实用的本地文件夹同步/备份软件推荐 (SyncToy/FreeFileSync/Compare Advance)
    微信扫码后“滴”音量太大的解决方案
    百度推广针对全局设置“否定关键词”——否定关键词包
    拼多多app怎么退出或切换账号
    响应式网页设计的9条基本原则
    pr导出视频时,提示“此产品的许可已停止工作”的解决方案
    windows内存清理工具——rammap
    图司机编辑器(快速编辑海报)
  • 原文地址:https://www.cnblogs.com/Ace-suiyuan008/p/9506554.html
Copyright © 2020-2023  润新知