码迷,mamicode.com
首页 > 其他好文 > 详细

00088_递归

时间:2017-12-24 11:20:37      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:system   rect   否则   类继承   递归   概述   ati   文件夹   demo   

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 }

 

  

00088_递归

标签:system   rect   否则   类继承   递归   概述   ati   文件夹   demo   

原文地址:http://www.cnblogs.com/gzdlh/p/8095762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!