• 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);
        }
    }
  • 相关阅读:
    用wifi调试android程序
    【翻译】Ext JS 4.1的性能
    index range scan,index fast full scan,index skip scan发生的条件
    柱状图(Histogram),绑定变量,bind peeking,cursor_sharing 之间的关系1 柱状图
    柱状图(Histogram),绑定变量,bind peeking,cursor_sharing 之间的关系3 柱状图与cursor_sharing
    JNI开发入门
    索引的Clustering Factor
    索引选择性
    列定义允许null,可能导致Index Hint提升不走索引
    柱状图(Histogram),绑定变量,bind peeking,cursor_sharing 之间的关系2 绑定变量与柱状图
  • 原文地址:https://www.cnblogs.com/Ace-suiyuan008/p/9506554.html
Copyright © 2020-2023  润新知