Java用队列优化递归
来源:互联网 发布:小程序个人中心源码 编辑:程序博客网 时间:2024/05/29 08:00
- 递归的优点
递归代码写起来比较方便简洁,结构层次清晰,可读性比较好。 - 递归的缺点
递归需要调用函数,递归需要系统堆栈,递归空间和时间消耗都比较大,并且如果递归太深,会发生 堆栈溢出,系统会奔溃。 - 如何解决递归太深的问题?
当使用递归遍历的目录可能存在递归太深的时候,我们可以选择用队列来优化递归。 - 遍历文件例子:
public void getFile(File file){ if(file.isDirectory()){//如果是目录 File[] files = file.listFiles(); for(int i=0;i<files.length;i++) getFile(files[i]);//递归 } else if(file.isFile()){ //如果是文件,就输出。 System.out.println(file.getName()); } }
5 . 使用队列优化。
//创建一个队列Queen<File> queue = new LinkedList<File>();queue.offer(file);while(!queue.isEmpty()){//如果队列不为空 File file = queue.poll(); if(file.isDirectory()){ //从队列中获取一个File File[] files = file.listFiles(); //是目录,将目录下所有文件遍历出来,存储到队列中 for(int i =0;i<files.length;i++) queue.offer(files[i]); }else{ //是文件,进行输出。 System.out.println(file.getName()); }}
6 . 总结
如果递归的是深而不广的树时,应该使用队列来优化递归;如果递归是广而不深的树的时候,就应该用递归来优化队列。
0 0
- Java用队列优化递归
- Java队列递归求解素数环问题
- 【HDU4919】递推java大数 递归优化
- 关于Java中尾递归的优化
- 用优先级队列优化dijkstra
- 递归优化
- 递归优化
- 队列,栈和递归
- 栈&队列&栈帧&递归
- hdu1579简单的用dp优化递归
- Vijos1243----用单调队列优化的DP
- dijkstre+heap(用STL优先队列优化)
- 《编程导论(Java) ·10.3》补充:递归的优化
- Java版爬楼梯递归版最佳优化
- Java实现的归并排序算法(递归优化版)
- dijkstra队列优化链式前向星(C++、Java)
- 递归优化之尾递归
- 递归及尾递归优化
- Hibernate_查询_HQL详解(三)_命名的查询、更新与删除的HQL语法
- java 消息机制 ActiveMQ入门实例
- 量化交易——传统技术分析随机震荡指标STO的原理及实现
- 375. Guess Number Higher or Lower II
- Lua-闭包
- Java用队列优化递归
- HTTP API 设计指南
- 制作 wordpress 博客静态化到本地
- 函数的瞬时python 多端元光谱混合分解<七>
- 等待中。
- 377. Combination Sum IV
- Lua-迭代器
- 管理者和学者的关系,深入的换位思考的重要性
- 第34课:彻底解密Spark 2.1.X中Shuffle 中SortShuffleWriter排序源码内幕解密