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
  • 相关阅读:
    剑指offer:面试题25、二叉树中和为某值的路径
    剑指offer:面试题24、二叉搜索树的后续遍历序列
    剑指offer:面试题23、从上往下打印二叉树
    剑指offer:面试题22、栈的压入、弹出序列
    剑指offer:面试题21、包含min函数的栈
    剑指offer:面试题20、顺时针打印矩阵
    剑指offer:面试题19、二叉树的镜像
    剑指offer:面试题18、树的子结构
    剑指offer:面试题17、合并两个排序的链表
    剑指offer:面试题16、反转链表
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/5572437.html
Copyright © 2011-2022 走看看