Java基础-递归相关知识点和用法

本文详细讲解了Java中的递归概念,包括递归注意事项,如必须有出口避免死递归,以及递归可能导致的内存溢出问题。通过阶乘和兔子问题(斐波那契数列)的例子,展示了递归的应用,并提供了递归实现的代码示例。此外,还介绍了如何使用递归遍历目录输出.java文件的绝对路径及递归删除带内容的目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

递归

在方法中,调用方法本身的现象叫递归

注意事项

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结尾,并输出绝对路径

在这里插入图片描述

递归删除带内容的目录

在这里插入图片描述
在这里插入图片描述

拷贝多级目录和内容

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值