递归的定义
指在当前方法中自己调用自己的情况
递归的分类
递归分为两种:直接递归和间接递归
- 直接递归:方法直接调用自己
- 间接递归:A方法调用B方法,B方法调用C方法,C方法调用A方法,这种不直接调用自己的递归,称为间接递归。
递归的注意事项
- 递归一定要有一定的条件限定,保证递归能够停下来,否则会发生栈内存溢出。
- 在递归中虽然有限定条件,但是递归的次数不宜过多,否则也会发生栈内存溢出。
- 构造方法,要禁止递归。
递归遍历多级目录
为了更好理解递归,我们选定目录E:\文档
,遍历其子目录及文件。
package com.example.demo;
import java.io.File;
public class FileListDemo {
public static void main(String[] args) { File file = new File("E:\\文档"); getAllFiles(file); }
public static void getAllFiles(File dir) { System.out.println(dir); File[] files = dir.listFiles(); for (File file : files) { if (file.isDirectory()) { getAllFiles(file); } else { System.out.println(file); } } } }
|
递归遍历特定文件搜索
在这个例子中,我们需要递归搜索以.pdf
结尾的文件,因此,我们在else
语句中增加判断是否以.pdf
结尾的文件,再打印输出。
package com.example.demo;
import java.io.File;
public class FileListDemo {
public static void main(String[] args) { File file = new File("E:\\文档"); getAllFiles(file); }
public static void getAllFiles(File dir) { File[] files = dir.listFiles(); for (File file : files) { if (file.isDirectory()) { getAllFiles(file); } else { if(file.getName().endsWith(".pdf")){ System.out.println(file); } } } } }
|