递归
概述
递归:指的是当前方法调用自己的一种现象。
递归的分类:
递归分为两类:直接递归和间接递归
直接递归:称为方法自身调用自己的情况
间接递归:可以归结为:方法A调用了方法B,方法B调用了方法C,方法C反过来又调用了方法A。
注意事项:
递归一定要有边界条件(条件限定),保证递归能够停止下来,否则会发生栈内存溢出。
在递归当中虽然有限定条件,但是递归的次数也不能太多,否则也会发生栈内存溢出现象。
构造方法禁止递归。
使用递归实现累加求和
计算1~n之间的和
图解分析:
递归求阶乘
阶乘:所有小于及等于该数的正整数的乘积。
n的阶乘:n! = n * (n-1) * (n-2) * (n-3) * … * 3 * 2 * 1
使用递归打印多级目录
代码示例:
综合案例
文件搜索
搜索:C:UsersadminDesktopHello目录中的所有的.txt文件
分析:
1.目录搜索,无法判断有多少级目录,所以使用递归,遍历所有的目录
2.遍历目录的时候,获取的是所有的子文件,通过文件的名称来进行诊断,判断是否符合给定的条件.txt
代码实现:
文件过滤器优化
是一个接口,是File的过滤器,该接口的对象可以传递给File类的listFiles(FileFilter)作为参数,接口当中只有一个方法:
Lambda优化
示例代码: