递归的优点
 递归代码写起来比较方便简洁,结构层次清晰,可读性比较好。 递归的缺点
 递归需要调用函数,递归需要系统堆栈,递归空间和时间消耗都比较大,并且如果递归太深,会发生 堆栈溢出,系统会奔溃。 如何解决递归太深的问题?
 当使用递归遍历的目录可能存在递归太深的时候,我们可以选择用队列来优化递归。 遍历文件例子:

text
1 2 3 4 5 6 7 8 9 10 11
   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 . 使用队列优化。

text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
//创建一个队列
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 . 总结
 如果递归的是深而不广的树时,应该使用队列来优化递归;如果递归是广而不深的树的时候,就应该用递归来优化队列。

原文地址:https://blog.csdn.net/pseudonym_/article/details/71600084?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168474993716782425192019%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168474993716782425192019&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-27-71600084-null-null.142^v87^insert_down1,239^v2^insert_chatgpt&utm_term=java%E4%BC%98%E5%8C%96