当前位置:   article > 正文

Java用队列优化递归_java 递归层数太深怎么优化

java 递归层数太深怎么优化
  1. 递归的优点
     递归代码写起来比较方便简洁,结构层次清晰,可读性比较好。
  2. 递归的缺点
     递归需要调用函数,递归需要系统堆栈,递归空间和时间消耗都比较大,并且如果递归太深,会发生 堆栈溢出,系统会奔溃。
  3. 如何解决递归太深的问题?
     当使用递归遍历的目录可能存在递归太深的时候,我们可以选择用队列来优化递归。
  4. 遍历文件例子:
    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());
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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());
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

6 . 总结
 如果递归的是深而不广的树时,应该使用队列来优化递归;如果递归是广而不深的树的时候,就应该用递归来优化队列。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/116079
推荐阅读
相关标签
  

闽ICP备14008679号