递归
:指在当前方法内调用自己的这种现象。
递归的分类
:
递归分为两种,直接递归和间接递归。
直接递归称为方法自身调用自己。
间接递归可以
A
方法调用
B
方法,
B
方法调用
C
方法,
C
方法调用
A
方法。
注意事项
:
递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
java.lang.StackOverflowError
构造方法
,
禁止递归
递归累加求和
计算1~n的和
递归求阶乘
阶乘:所有小于等于该数的正整数的积
n
的阶乘:
n
! =
n
*
(
n
‐
1
)
*
...
*
3
*
2
*
1
递归打印多级目录
System.out.println("start"); File[] files = dir.listFiles(); System.out.println(files); for(File file: files){ if(file.isFile()) { System.out.println("文件名" + file.getAbsolutePath()); }else{ System.out.println("目录"+file.getAbsolutePath()); printDir(file);//弹栈 之后返回到调用的节点继续执行 } } System.out.println("end");
文件过滤器优化
java.io.FileFilter
是一个接口,是
File
的过滤器。 该接口的对象可以传递给
File
类的
listFiles(FileFilter)
作为参数, 接口中只有一个方法。
boolean accept(File pathname)
:测试
pathname
是否应该包含在当前
File
目录中,符合则返回
true