zoukankan      html  css  js  c++  java
  • java io流之递归

    递归

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

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

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

    直接递归称为方法自身调用自己。

    间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。

    public static void main(String[] args) {
            // TODO 自动生成的方法存根
            System.out.println(sum(100));
            System.out.println(get(10));
            
        }
        public static void a() {
            
            a();
        }
        //利用递归计算1~100的和
        public static int sum(int n) {
            if(n==1) {
                return 1;
            }else {
                return n+sum(n-1);
            }
        }
        //利用递归求100的成绩
        public static int get(int n) {
            if(n==1) {
                return 1;
            }else {
                return n*get(n-1);
            }
        }
    }

    注意:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。

    在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。

     
    public static void main(String[] args) {
    
            get(new File("F:\java0512\eclipse0512\io0512"));
        }
        public static void get(File dir) {
            //获取当前目录这一级的文件和文件夹对象数组
            File[] files=dir.listFiles();
            for (File file : files) {
                //如果当前file对象是文件夹那么继续遍历
                if(file.isDirectory()) {
                    //打印文件夹
                    System.out.println(file+"文件夹");
                    get(file);
                }else {
                    //如果不是文件夹则直接打印文件
                    System.out.println(file);
                }
                
            }
        }
    
    }

    public class MyFilter implements FileFilter{

    
    

    @Override
    public boolean accept(File pathname) {
    if(pathname.isDirectory()) {
    return true;
    }
    return pathname.getName().toLowerCase().endsWith(".txt");
    }

    }

     

    冒泡排序

        public static void main(String[] args) {
            // 冒泡排序法
            int[] arr= {7,1,6,22,11,3,2};
            for (int i = 0; i < arr.length-1; i++) {
                for (int j = 0; j < arr.length-i-1; j++) {
                    if(arr[j]>arr[j+1]) {
                        int n=arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=n;
                    }
                }
            }
            for (int i : arr) {
                System.out.println(i);        
            }
        
        }
    
    }
  • 相关阅读:
    maven工程下 读取resource下配置文件
    js生成二维码以及点击下载二维码
    RGB颜色值与十六进制颜色码对照表
    用Java实现给图片添加文字
    CryptoAPI与openssl数字签名与验证交互
    CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
    openssl与cryptoAPI交互AES加密解密
    JAVA解析各种编码密钥对(DER、PEM、openssh公钥)
    Java与.NET兼容的RSA密钥持久化方法
    .NET导入openssl生成的公钥之BEGIN RSA PUBLIC KEY
  • 原文地址:https://www.cnblogs.com/haoduoyu0512/p/13405250.html
Copyright © 2011-2022 走看看