目录

1. 递归:方法自己调用自己

2. 在Java中实现递归打印文件夹

递归:方法自己调用自己

1.递归的分类:

递归分为两种,直接递归和间接递归。

直接递归称为方法自身调用自己。

间接递归可以A方法调用B方法,B方法调用c方法,c方法调用A方法。

2.注意事项:

递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。

在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。

构造方法,禁止递归

3.递归的使用前提:

当调用方法时方法的主体不变,每次调用方法的参数不同,可以调用递归

在Java中实现递归打印文件夹

1.实现方法

/**

* 方法名:show01

* 返回值类型:void

* 参数列表:File file

*/

/private static void show01(File file) {

//打印被遍历的目录名称,打印文件夹

System.out.println(file);

//调用listFiles()方法,用File类型的数组来接收listFiles()方法的返回值

File[] files = file.listFiles();

//使用增强for遍历数组

for (File f : files) {

//关键if判断,如果是一个文件夹则会再从开头来一遍,除非不是文件夹才会else下打印

if (f.isDirectory()){

show01(f);

}else {

//打印文件,不是打印文件夹哦

System.out.println(f);

}

}

}

2.主方法

public static void main(String[] args) {

File f1 = new File("D:\\test");

show01(f1);

}

3.最终效果

D:\test

D:\test\a1

D:\test\a1\a1a1

D:\test\a1\a1a1\com

D:\test\a1\a1a1\com\secret.txt

D:\test\b2

D:\test\b2\b2.txt

D:\test\b2\well

D:\test\c3

D:\test\d4

D:\test\d4\wuwuwu.mp4

4.实现文件的搜索(匹配)

/**

* 方法名:show01

* 返回值类型:void

* 参数列表:File file

*/

private static void show01(File file) {

// System.out.println(file); //打印被遍历的目录名称

File[] files = file.listFiles();

for (File f : files) {

if (f.isDirectory()){

show01(f);

}else {

//关键判断,调用toString()方法再调用String类的endWith方法匹配文件的后缀

if (f.toString().endsWith(".txt")){

System.out.println(f);

}

}

}

}

}

5.文件搜索结果

D:\test\a1\a1a1\com\secret.txt

D:\test\b2\b2.txt

其他文章:

java实现5 4 3 2 1递归_递归及递归的使用相关推荐

  1. java等差数列求和递归_[编程题] 递归实现等差数列–招银面试题1

    [编程题] 递归实现等差数列–招银面试题1 递归实现等差数列–招银面试题 题目描述 使用递归实现一个球等差数列的和,要求,输入首项a,公差d,数列长度n,求出sum 示例 例如: 输入: 1 1 3 ...

  2. java兔子问题 递归_兔子问题 —— 递归的应用

    兔子问题.递归 public class Test { /** * 兔子问题 * 斐波那契数列 */ @org.junit.Test public void test2() { int m = 5; ...

  3. 打靶问题java递归_打靶射击[递归]

    一个射击运动员打靶,靶一共有10环,连开10枪打中90环的可能行有多少种? long compute(int score, int num) { if (score<0||score>nu ...

  4. 可能存在无限递归_无限分类递归+排序解剖

    首先我们先了解一下递归函数: 递归函数在语言学习的时候会单独拿出来学习,因为它非常常用,本质上来讲递归函数就是调用自己的函数. 举个例子: test函数里面又再调用了自身,这就是俗称的递归函数!递归函 ...

  5. sql 一张表递归_查看我的递归视觉指南(因为一张图片价值1,000字)

    sql 一张表递归 In this article, I will explain recursion (almost) completely with visual representations. ...

  6. java 文件 递归_JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)

    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...

  7. foreach jdk8 递归_[Java 8] (8) Lambda表达式对递归的优化(上) - 使用尾递归 .

    递归优化 很多算法都依赖于递归,典型的比如分治法(Divide-and-Conquer).但是普通的递归算法在处理规模较大的问题时,常常会出现StackOverflowError.处理这个问题,我们可 ...

  8. JAVA语言基础-面向对象(IO:IO字符流、递归)

    2019独角兽企业重金招聘Python工程师标准>>> 21.01_IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先 ...

  9. java 递归改非递归_使用Java ThreadLocals的意外递归保护

    java 递归改非递归 对于那些使用第三方工具来尝试扩展它们而又不完全了解它们的人来说,这是一个小技巧. 假定以下情况: 您想扩展一个展示分层数据模型的库(假设您要扩展Apache Jackrabbi ...

  10. java 什么时候用递归_如果要用Java实现算法,一定慎用递归

    现象 : 递归是我们很经典的一种算法实现,可以很好的描述一个算法的原理!对于算法的描述.表现和代码结构理解上,递归都是不错的选择! 但是本文想说的是java实现一个递归算法的时候尽量不要用递归实现,而 ...

最新文章

  1. Python argparse模块基本用法
  2. 大概率有料的地方,大概率没有料的地方
  3. Module build failed: Error: Node Sass version 5.0.0 is incompatible with ^4.0.0.
  4. SQL Server Profiler概述
  5. IDL实现波段运算DOIT(一)
  6. 一个例子搞懂单纯形法大M法和两阶段法
  7. IDEA 插件开发,显示气泡
  8. Linux:计算机网络基础
  9. ilove中文_iloveyou歌词中文版是什么歌
  10. 《Oracle Exadata云服务官方指南》之 Oracle Database Exadata 云服务
  11. ali p3c规则扩展-集成sonar
  12. OSChina 周六乱弹 ——巴叔说他一直擅长硬来,弱弱的问……
  13. 密西根州立大学计算机排名,美国密西根州立大学 Alex X. Liu 教授来我校作学术讲座...
  14. mt4双线macd_ATFX:技术指标MACD及顶底背离用法精讲
  15. 安徽农业大学计算机考研分数线,安徽农业大学历年考研分数线汇总[2012-2021]
  16. Maxima在线性代数的应用
  17. 证明集合的包含关系和相等的常用的方法
  18. 华为设置android系统提醒功能,华为手机短信不提醒怎么办?华为手机短信提醒设置方法...
  19. 金九银十,为期2周的前端面经汇总(初级前端)
  20. kafka连接mysql数据库,Kafka-connect-jdbc-source连接mysql数据库实战

热门文章

  1. 一些控制鼠标的例子!
  2. 如何实现:GridView 控件中显示的文本不自动换行,隐藏超出宽度部分wj-wangjun
  3. 深度优先遍历(Depth First Search)
  4. [洛谷P3613]睡觉困难综合征
  5. gitbook 配置
  6. CMMI5访谈学习笔记(项目经理角色)(转)
  7. python使用逐行读取,出现空行,清楚空行方法
  8. 到底什么才是自动化巡检?
  9. 外军网络空间作战简报
  10. 王方月 - 《君王2》与cocos2d-x的邂逅