1.递归的定义
编程语言中,方法直接或间接调用方法本身,则该方法称为递归方法(核心思想就是自己调用自己)。
2.递归的使用
利用递归可以用简单的程序来解决一些复杂的问题。
递归结构包括两个部分:
定义递归头
什么时候不调用自身方法。如果没有头,将陷入死循环。
递归体
什么时候需要调用自身方法。
【随堂练习】
1、计算n的阶乘。
2、假如有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,请问第n个月后的兔子有多少对?
3. 递归的缺陷
简单的程序是递归的优点之一。但是递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度要比循环慢的多。所以再使用时要慎重,在要求高性能的情况下尽量避免使用递归。
4.递归目录和文件
【示例】File类的综合应用,遍历盘符下所有的目录和文件
public class FileDemo {
public static void main(String[] args) {
File file = new File("G:/demo");
printFile(file, 0);
}
/**
* 打印文件信息
* @param file 文件名称
* @param level 层次数(实际就是:第几次递归调用)
*/
public static void printFile(File file, int level) {
// 1.输出层次结构
for(int i = 0; i < level; i++) {
System.out.print("-");
}
// 2.输出文件或文件夹名称
System.out.println(file.getName());
// 3.遍历是否为文件夹
if(file.isDirectory()) {
// 4.获取文件中所有的子文件
File[] files = file.listFiles();
// 5.遍历所有子文件
for(File f : files) {
// 6.继续打印文件信息
printFile(f, level + 1);
}
}
}
}
ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。