zoukankan      html  css  js  c++  java
  • Java中递归的优缺点,Java写一个递归遍历目录下面的所有文件包括子文件夹里边的文件。

    题目: 遍历出aaa文件夹下的文件

    首先分析思路:

      1、首先判断这个文件夹是否为文件,通过isFile()函数可以判断是否为文件。

      2、然后通过isDirectory判断是否为目录。

      3、如果是目录就使用递归遍历目录

      代码如下:

      

     1 import java.io.File;
     2 
     3 public class ZuoYe {
     4     public static void main(String[] args) {
     5         //创建file对象
     6         File f=new File("d://新建文件夹");
     7         //用listFiles()方法遍历文件夹
     8         File[] listFiles = f.listFiles();
     9         fun(listFiles);
    10     }
    11     public static void fun(File[] file){
    12         //如果文件夹为空就直接退出
    13         if(file==null){
    14             return;
    15         }
    16         //遍历file
    17         for(File f1:file){
    18             //判断如果文件不是文件夹就直接输出文件名
    19             if(f1.isFile()){
    20                 System.out.println(f1.getName());
    21             }
    22             //如果文件是个文件夹就继续通过调用自己遍历文件夹
    23             else if(f1.isDirectory()){
    24                 fun(f1.listFiles());
    25             }
    26         }
    27     }
    28 }

    总结:递归思想也就是自己调用自己,其实还是重复使用,相当于先遍历外层的文件夹,然后文件夹里边还存在文件夹,所有就调用自己的方法再次遍历内部的文件夹而已。

    递归的优点:最大的就是简单

    递归的缺点:

      1、递归由于是函数调用自身,而函数调用是有时间和空间的消耗的:每一次函数调用,都需要在内存栈中分配空间以保存参数、返回地址以及临时变量,而往栈中压入数据和弹出数据都需要时间。->效率低

      2、因为是调用自己,所以很多的计算都是重复的。--->效率

      3、调用栈可能会溢出,其实每一次函数调用会在内存栈中分配空间,而每个进程的栈的容量是有限的,当调用的层次太多时,就会超出栈的容量,从而导致栈溢出。->性能

  • 相关阅读:
    NYOJ 10 skiing DFS+DP
    51nod 1270 数组的最大代价
    HDU 4635 Strongly connected
    HDU 4612 Warm up
    POJ 3177 Redundant Paths
    HDU 1629 迷宫城堡
    uva 796
    uva 315
    POJ 3180 The Cow Prom
    POJ 1236 Network of Schools
  • 原文地址:https://www.cnblogs.com/yanpingping/p/10584676.html
Copyright © 2011-2022 走看看