一.概念
旨在当前方法内调用自己的这种现象
二.递归的分类
1.直接递归
方法自身调用自己
2.间接递归
A方法调用B方法,B方法调用C方法,C方法调用A方法
3.注意事项:
一定要有条件限定,保证递归能停止,否则出现栈内存溢出
虽然有限定条件,但是递归次数不能太多,否则出现栈内存溢出
构造方法:禁止递归
三.递归使用前提
当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归
四.递归求阶层
/*
定义方法使用递归计算阶乘:5!=5*4*3*2*1
*/
public static void main(String[] args) {
int jc = jc(5);
System.out.println(jc);
}
public static int jc(int n){
if (n==1){
return 1;
}
return n*jc(n-1);
}
五.递归打印多级目录
public static void main(String[] args) {
File file = new File("G:\\idea");
getAllFile(file);
}
public static void getAllFile(File f){
System.out.println(f);//打印遍历的目录名称
File[] files = f.listFiles();
for (File file : files) {
//对遍历得到的File对象file进行判断,判断是否是文件夹
if (file.isDirectory()){//是文件夹
getAllFile(file);//继续遍历里面的文件/文件夹
}else {//是文件
System.out.println(file);//文件就打印
}
}
}