递归,
方法的递归指在当前方法内调用自己的这种现象
public void method(){
System.out.println(“递归的演示”);
//在当前方法内调用自己
method();
}
递归分为两种,直接递归和间接递归。
直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。
递归的代码演示,计算1-n之间的和,使用递归完成
public class DiGuiDemo {
publicstaticvoidmain(String[] args) {
//计算1~num的和,使用递归完成
intn = 5;
intsum = getSum(n);
System.out.println(sum);
}
publicstaticintgetSum(intn) {
if(n== 1){
return1;
}
returnn + getSum(n-1);
}
}
注意:
1在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
2递归的时候一定要给自己留一个出口,不然就是死递归,会无限循环.
3构造方法不能作为递归
递归打印所有子目录中的文件路径
编写一个方法用来打印指定目录中的文件路径,并进行方法的调用
要求:若指定的目录有子目录,那么把子目录中的文件路径也打印出来
步骤:
1.指定要打印的目录File对象
2.调用getFileAll()方法
2.1获取指定目录中的所有File对象
2.2遍历得到每一个File对象
2.3 判断当前File 对象是否是目录
判断结果为true,说明为目录,通过递归,再次调用步骤2的getFileAll()方法
判断结果为false,说明是文件,打印文件的路径
代码演示
publicstaticvoidmain(String[] args) {
Filefile = newFile("d:\\test");
getFileAll(file);
}
//获取指定目录以及子目录中的所有的文件
publicstaticvoidgetFileAll(File file) {
File[]files = file.listFiles();
//遍历当前目录下的所有文件和文件夹
for(File f : files) {
//判断当前遍历到的是否为目录
if(f.isDirectory()){
//是目录,继续获取这个目录下的所有文件和文件夹
getFileAll(f);
}else{
//不是目录,说明当前f就是文件,那么就打印出来
System.out.println(f);
}
}
}
}