• 00088_递归


    1、递归的概述

      (1)递归,指在当前方法内调用自己的这种现象;

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

      (2)直接递归:方法自身调用自己;

      (3)间接递归:A方法调用B方法,B方法调用C方法,C方法调用A方法;

      (4)递归的代码演示,计算1-n之间的和,使用递归完成;

     1 public class DiGuiDemo {
     2     public static void main(String[] args) {
     3         // 计算1~n的和,使用递归完成
     4         int n = 5;
     5         int sum = getSum(n);
     6         System.out.println(sum);
     7     }
     8 
     9     public static int getSum(int n) {
    10         if (n == 1) {
    11             return 1;
    12         } else {
    13             return n + getSum(n - 1);
    14         }
    15     }
    16 }

      (5)递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出;在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出;

    2、递归打印所有子目录中的文件路径

      编写一个方法用来打印指定目录中的文件路径,并进行方法的调用;
      要求:若指定的目录有子目录,那么把子目录中的文件路径也打印出来。

     1 public class FileDemo2 {
     2     public static void main(String[] args) {
     3         File file = new File("d:\test");
     4         getFileAll(file);
     5     }
     6     //获取指定目录以及子目录中的所有的文件
     7     public static void getFileAll(File file) {
     8         File[] files = file.listFiles();
     9         //遍历当前目录下的所有文件和文件夹
    10         for (File f : files) {
    11             //判断当前遍历到的是否为目录
    12             if(f.isDirectory()){
    13                 //是目录,继续获取这个目录下的所有文件和文件夹
    14                 getFileAll(f);
    15             }else{
    16                 //不是目录,说明当前f就是文件,那么就打印出来
    17                 System.out.println(f);
    18             }
    19         }
    20     }
    21 }

    3、搜索指定目录中的.java文件(含子目录)

      需求:打印指定目录即所有子目录中的.java文件的文件路径;
      要求:编写一个方法用来打印指定目录中的.java文件路径,并进行方法的调用;
      若指定的目录有子目录,那么把子目录中的.java文件路径也打印出来。
      (1)自定类继承FilenameFilter过滤器接口

    1 //定义类实现文件名称FilenameFilter过滤器
    2 class MyFileFilter implements FilenameFilter{
    3     public boolean accept(File dir, String name) {
    4         return name.endsWith(".java");
    5     }
    6 }

      (2)测试类

     1 public class FileDemo4 {
     2     public static void main(String[] args) {
     3         File file = new File("d:\test");
     4         getFileAll(file);
     5     }
     6     //获取指定目录以及子目录中的所有的文件
     7     public static void getFileAll(File file) {
     8         File[] files = file.listFiles(MyFileFilter());
     9         //遍历当前目录下的所有文件和文件夹
    10         for (File f : files) {
    11             //判断当前遍历到的是否为目录
    12             if(f.isDirectory()){
    13                 //是目录,继续获取这个目录下的所有文件和文件夹
    14                 getFileAll(f);
    15             }else{
    16                 //不是目录,说明当前f就是文件,那么就打印出来
    17                 System.out.println(f);
    18             }
    19         }
    20     }
    21 }

      

  • 相关阅读:
    《梦断代码》读书计划
    四则运算3
    《梦断代码》读后感Ⅱ
    第二次结对开发
    首次结对开发
    四则运算2的测试
    四则运算2的任务完成时间表
    四则运算2
    《梦断代码》观后感1
    四则运算2的心路历程
  • 原文地址:https://www.cnblogs.com/gzdlh/p/8095762.html
Copyright © 2020-2023  润新知