• 递归


    1_递归概念&分类&注意事项

     

     

     

     

     

     =======================================================================================================================

    2_练习_使用递归计算1-n之间的和

     

     ============================================================================

    3_练习_使用递归计算阶乘

    Demo03Recurison.java

    package com.itheima.demo02.Recursion;
    /*
    练习:
    使用递归计算阶乘
    n的阶乘:n! = n * (n-1) *...* 3 * 2 * 1

    */
    public class Demo03Recurison {
    public static void main(String[] args) {
    int jiecheng = jc(5);
    System.out.println(jiecheng);
    }

    /*
    定义方法使用递归计算阶乘
    5的阶乘: 5! = 5*(5-1)*(5-2)*(5-3)*(5-4)=5*4*3*2*1
    递归结束的条件
    获取到1的时候结束
    递归的目的
    获取下一个被乘的数字(n-1)
    方法的参数发生变化
    5,4,3,2,1
    */
    public static int jc(int n){
    //获取到1的时候结束
    if(n==1){
    return 1;
    }
    //获取下一个被乘的数字(n-1)
    return n * jc(n-1);
    }
    }

    ===============================================================================

    4_练习_递归打印多级目录

     Demo04Recurison.java

    package com.itheima.demo02.Recursion;

    import java.io.File;

    /*
    练习:
    递归打印多级目录
    需求:
    遍历c:\abc文件夹,及abc文件夹的子文件夹
    c:\abc
    c:\abc\abc.txt
    c:\abc\abc.java
    c:\abc\a
    c:\abc\a\a.jpg
    c:\abc\a\a.java
    c:\abc\b
    c:\abc\b\b.java
    c:\abc\b\b.txt
    */
    public class Demo04Recurison {
    public static void main(String[] args) {
    File file = new File("c:\abc");
    getAllFile(file);
    }

    /*
    定义一个方法,参数传递File类型的目录
    方法中对目录进行遍历
    */
    public static void getAllFile(File dir){
    System.out.println(dir);//打印被遍历的目录名称
    File[] files = dir.listFiles();
    for (File f : files) {
    //对遍历得到的File对象f进行判断,判断是否是文件夹
    if(f.isDirectory()){
    //f是一个文件夹,则继续遍历这个文件夹
    //我们发现getAllFile方法就是传递文件夹,遍历文件夹的方法
    //所以直接调用getAllFile方法即可:递归(自己调用自己)
    getAllFile(f);
    }else{
    //f是一个文件,直接打印即可
    System.out.println(f);
    }
    }
    }
    }

    ==========================================================================================

    5_综合案例_文件搜索

     Demo05Recurison.java

    package com.itheima.demo02.Recursion;

    import java.io.File;

    /*
    练习:
    递归打印多级目录
    需求:
    遍历c:\abc文件夹,及abc文件夹的子文件夹
    只要.java结尾的文件
    c:\abc
    c:\abc\abc.txt
    c:\abc\abc.java
    c:\abc\a
    c:\abc\a\a.jpg
    c:\abc\a\a.java
    c:\abc\b
    c:\abc\b\b.java
    c:\abc\b\b.txt
    */
    public class Demo05Recurison {
    public static void main(String[] args) {
    File file = new File("c:\abc");
    getAllFile(file);
    }

    /*
    定义一个方法,参数传递File类型的目录
    方法中对目录进行遍历
    */
    public static void getAllFile(File dir){
    //System.out.println(dir);//打印被遍历的目录名称
    File[] files = dir.listFiles();
    for (File f : files) {
    //对遍历得到的File对象f进行判断,判断是否是文件夹
    if(f.isDirectory()){
    //f是一个文件夹,则继续遍历这个文件夹
    //我们发现getAllFile方法就是传递文件夹,遍历文件夹的方法
    //所以直接调用getAllFile方法即可:递归(自己调用自己)
    getAllFile(f);
    }else{
    //f是一个文件,直接打印即可
    /*
    c:\abc\abc.java
    只要.java结尾的文件
    1.把File对象f,转为字符串对象
    */
    //String name = f.getName();//abc.java
    //String path = f.getPath();//c:\abc\abc.java
    //String s = f.toString();//c:\abc\abc.java

    //把字符串,转换为小写
    //s = s.toLowerCase();

    //2.调用String类中的方法endsWith判断字符串是否是以.java结尾
    //boolean b = s.endsWith(".java");

    //3.如果是以.java结尾的文件,则输出
    /*if(b){
    System.out.println(f);
    }*/

    if(f.getName().toLowerCase().endsWith(".java")){
    System.out.println(f);
    }
    }
    }
    }
    }

  • 相关阅读:
    Graphviz安装配置
    固定ip
    机器学习基础
    研究生入学感悟
    复试临时练习
    复试临时练习
    Dev-C++回文数遇到的小麻烦
    单例模式
    工厂方法模式
    Spark的checkpoint详解
  • 原文地址:https://www.cnblogs.com/curedfisher/p/12462711.html
Copyright © 2020-2023  润新知