递归与文件操作:从基础到高级应用
2024-12-26 08:40
- 递归:指在当前方法内调用自己的这种现象。
- 递归的分类:
- 递归分为两种,直接递归和间接递归。
- 直接递归称为方法自身调用自己。
- 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。
- 注意事项:
- 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
- 在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
- 构造方法,禁止递归
计算1 ~ n的和
分析:num的累和 = num + (num-1)的累和,所以可以把累和的操作定义成一个方法,递归调用。
实现代码:
代码执行图解
💡小贴士:递归一定要有条件限定,保证递归能够停止下来,次数不要太多,否则会发生栈内存溢出。
分析:这与累和类似,只不过换成了乘法运算,学员可以自己练习,需要注意阶乘值符合int类型的范围。
代码实现:
分析:多级目录的打印,就是当目录的嵌套。遍历之前,无从知道到底有多少级目录,所以我们还是要使用递归实现。
代码实现:
文件搜索
搜索 目录中的 文件。
分析:
- 目录搜索,无法判断多少级目录,所以使用递归,遍历所有目录。
- 遍历目录时,获取的子文件,通过文件名称,判断是否符合条件。
代码实现:
是一个接口,是File的过滤器。 该接口的对象可以传递给File类的 作为参数, 接口中只有一个方法。
:测试pathname是否应该包含在当前File目录中,符合则返回true。
分析:
- 接口作为参数,需要传递子类对象,重写其中方法。我们选择匿名内部类方式,比较简单。
- 方法,参数为File,表示当前File下所有的子文件和子目录。保留住则返回true,过滤掉则返回false。保留规则:
- 要么是.java文件。
- 要么是目录,用于继续遍历。
- 通过过滤器的作用,返回的数组元素中,子文件对象都是符合条件的,可以直接打印。
代码实现:
分析:是只有一个方法的接口,因此可以用lambda表达式简写。
lambda格式:
代码实现:
最新文章
2024143期[大唐蜀绣]双色球杀号定胆精准专家预测
福彩双色球杀号定胆玩法本期推荐上期推荐命中情况红球24码01,02,04,0608,09,10,1112,15,16,1820,21,22,2324,25,26,2728,31,32,3301,03,04,0506,08,09,1011,14,16,1718,19,20,2426,27,28,2930,31,32,33对2码红球21码01,02,04,0608,09,10,111
336期[笨脑]专家预测P5精准1注今晚
体彩中心排列五24335期奖码:49906大小比3:2,奇偶比2:3,012路比4:1:0,质合比0:5,和值28点,和尾8点,跨度9。[解奇偶比]上期奇偶比2:3,上一次开出奇偶比2:3是2024334期,中间间隔了0期再次开出。本期预测奇偶比:1:4,5:0 建议防:0:5比例的出现
Docker图形化页面管理工具Portainer
1.Portainer 介绍 Portainer 是一款开源的Docker图形管理系统。 官网:https://www.portainer.io/2.Portainer 部署 3.Portainer 管理Docker主机被管理Docker主机节点开启Docker API: 4.关于时区问题说明 Docker时间和宿主同
2024年P5333期[壹号选手]十位杀号精准
333期壹号选手P5十位杀号精准:034 开:332期壹号选手P5十位杀号精准:256 开:67957[十位:5]331期壹号选手P5十位杀号精准:026 开:71227[十位:2]330期壹号选手P5十位杀号精准:157 开:81136[十位:3]329期壹号选手P5十位杀号精准:126 开:14780[十
2024长春国际医药健康产业博览会圆满落下帷幕
转自:中国吉林网 本届健博会以“新质引领健康、科技共创未来”为主题,整体规划面积约5万平方米,突出全链条展示吉林省中医药产业,特别是吉林·长白山人参产业规划及科研成果转化这一重点,围绕医药、医疗、医养和医学四大版块,
flask毕设校园移动办公系统(程序+论文)
本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。选题背景 随着信息技术的飞速发展,移动办公已经成为提高工作效率、优化管理流程的重要