递归
在方法中,调用方法本身的现象叫递归
注意事项
1、递归一定要有出口,否则就是死递归
2、递归对次数不能太多,否则容易内存溢出
3、构造方法不能递归使用
分析:
5! = 1 * 2 * 3 * 4 * 5
5! = 5 * 4!
4! = 4 * 3!
3! = 3 * 2!
2! = 2 * 1!
1! = 1
使用递归思想求5的阶乘
运行流程图
兔子问题(斐波那契数列)
有一对兔子,从出生后的第三个月起,每个月都生一对小兔子,小兔子长到三个月后,每个月又生一对兔子,假如兔子不死,第二十个月兔子的对数是多少?
分析:
第一个月 : 1对
第二个月 : 1对
第三个月 : 2对
第四个月 : 3对
第五个月 : 5对
第六个月 : 8对
1,1,2,3,5,8,。。。。。。
规律:
1、从第三个月开始,每个月对对数,是前两个月个数对和。
2、第一个月,和第二个月对对数是已知对,都是一对。
数组实现:
变量的变化实现
假如相邻两个月的兔子数量是a,b
第一个相邻的数据 a = 1,b = 1;
第二个相邻的数据 a = 1,b = 2;
第三个相邻的数据 a = 2,b = 3;
第四个相邻的数据 a = 3,b = 5;
第五个相邻的数据 a = 5,b = 8;
下一次的a是以前的b,下一次的b是以前的a+b;
递归实现
返回值类型 int
参数列表 int n
出口条件:第一个月是1,第二个月是1
规律:第三个开始是前两个月的和
递归实现输出指定目录下java结尾的文件的绝对路径
需求:在控制台输出某目录下java结尾的文件的绝对路径
思路:
1、封装目录
2、获取该目录下所有的文件或文件夹的File类的对象数组
3、遍历数组,判断是文件还是文件夹
4、如果是文件夹,回到第二步;如果是文件,判断是否是.java结尾,并输出绝对路径
递归删除带内容的目录