zoukankan      html  css  js  c++  java
  • 递归

    /*
     * 递归:方法定义中调用方法本身的现象
     *
     * 方法的嵌套
     * Math.max(Math.max(a,b),c)
     *
     * public void show(int n){
     *         if(n<=0){
     *                 System.exit(0);
     *         }
     *         System.out.println(n);
     *         show(--n);
     * }
     *
     * 注意事项:
     *         A:递归一定要有出口,否则就是死递归
     *         B: 递归的次数不能太多,否则内存溢出
     *         C:构造方法不允许递归调用
     */

    案例1:

    package com.digui.gz_02;
    
    /*
     * 请用代码实现求5的继承
     * 
     * 5!=1*2*3*4*5
     * 5!=5*4!
     * 
     * 循环实现
     * 递归实现
     *         a:做递归要写一个方法
     *         b:出口条件
     *         c:规律
     * 
     * 
     */
    
    public class DiGuiDemo {
        public static void main(String[] args) {
    //        int jc=1;
    //        for(int i=2;i<=5;i++){
    //            jc*=i;
    //        }
            System.out.println("5的阶乘是:"+JC(5));
        }
        
        /*
         *做递归要写一个方法:
         *    返回值类型 int
         *    参数列表:int n
         *    出口条件:
         *        if(n==1){return 1;}
         *    规律:
         *        if(n!=1){return n*方法名(n-1);}
         *
         */
        public static int JC(int n){
            if(n==1){
                return 1;
            }else{
                return n*JC(n-1);
            }
        }
    }
    View Code

    案例2:

    package com.digui.gz_02;
    
    /*
     * 有一对兔子,从出生后第三个月后起每一个月都生一对兔子,小兔子长到第三个月后又生一对兔子,假设兔子都不死,问每个月兔子对数为多少?
     *
     *学会推规则而不是心里臆测:
     *第一个月:    1
     *第二个月:    1
     *第三个月:    2
     *第四个月:    3
     *第五个月:    5
     *第六个月:    8
     *...
     *由此可见:
     *    1,1,2,3,5,6,...
     */
    public class DiGuiDemo2 {
        public static void main(String[] args) {
            
            System.out.println(rabbitCount(20));
        }
        /*
         * 返回值类型 int
         * 参数列表 int n
         * 出口条件(已知条件):第一个月和第二个月是1
         * 规律:从第三个月开始兔子数是前两项之和
         */
        public static int rabbitCount(int time){
            if(time<3){
                return 1;
            }else{
                return rabbitCount(time-1)+rabbitCount(time-2);
            }
            
        }
    }
    View Code

    案例3和4

    package com.digui.gz_02;
    
    import java.io.File;
    //import java.util.ArrayList;
    
    /*
     * 递归遍历指定目录下的指定后缀文件
     */
    public class DiGuiDemo3 {
    //    static ArrayList<File> fileArray=new  ArrayList<File>();
        public static void main(String[] args) {
            File file=new File("C:\Users\Administrator.PMIMP83HWNIKWOV\Desktop\suibianwanwan");
            getFileClass(file);
    //        System.out.println(fileArray.size());
    //        for(File f:fileArray){
    ////            System.out.println(f.getName());
    //            System.out.println(f.getAbsolutePath());
    //        }
        }
        
        
        /*
         * 返回值类型 void
         * 参数列表  文件夹File
         * 出口条件:文件,后缀名是.class
         * 
         * 
         */
        public static void getFileClass(File file){
            File[] files=file.listFiles();
            for(File f:files){
                if(f.isDirectory()){
                    getFileClass(f);
                }else{
                    if(f.getName().endsWith(".class")){
                        System.out.println(f.getAbsolutePath());
    //                    fileArray.add(f);
                    }
                }
            }
        }
    }
    View Code
    package com.digui.gz_02;
    
    import java.io.File;
    
    /*
     * 递归删除带内容的目录
     */
    public class DiGuiDemo4 {
        public static void main(String[] args) {
            File file=new File("C:\Users\Administrator.PMIMP83HWNIKWOV\Desktop\suibianwanwan");
            removeFile(file);
        }
        public static void removeFile(File file){
                File[] files=file.listFiles();
                    for(File f:files){
                        if(f.isFile()){
                            f.delete();
                            System.out.println("文件------"+f.getName()+"--------删除");
                        }else{
                            removeFile(f);
                        }                
                    }
                    System.out.println("文件夹------"+file.getName()+"--------删除");
                    file.delete();
                }        
                
            
        
    }
    View Code
  • 相关阅读:
    真正的e时代
    在线手册
    UVA 10616 Divisible Group Sums
    UVA 10721 Bar Codes
    UVA 10205 Stack 'em Up
    UVA 10247 Complete Tree Labeling
    UVA 10081 Tight Words
    UVA 11125 Arrange Some Marbles
    UVA 10128 Queue
    UVA 10912 Simple Minded Hashing
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/5572437.html
Copyright © 2011-2022 走看看