黑马程序员技术交流社区

标题: 关于递归的问题 [打印本页]

作者: 我为你着迷    时间: 2014-5-21 20:43
标题: 关于递归的问题
  1. import java.io.*;

  2. class FileDemo3
  3. {
  4.                 public static void main(String[] args)
  5.                 {
  6.                           File dir=new File("d:\\java0217");
  7.                           showDir(dir);
  8.           }
  9.           
  10.           public static void  showDir(File dir)
  11.           {
  12.                          
  13.                           System.out.println(dir);
  14.                           File[] files=dir.listFiles();
  15.                           for(int x=0; x<files.length;x++)
  16.                           {
  17.                                           if(files[x].isDirectory())
  18.                                                                    showDir(files[x]);
  19.                                           else
  20.                                                           System.out.println(files[x]);       
  21.                           }       
  22.           }
  23. }
复制代码
大家好 关于这段代码的递归的流程问题   不是很懂  哪位好心的大神帮忙详细解答下啊 谢谢了

作者: 波涛    时间: 2014-5-21 21:36
本帖最后由 波涛 于 2014-5-21 21:39 编辑

好的,假如D:\java0217文件中有1.mp3   2.mp3   3.mp3三个文件和一个叫music的文件夹, 它的里面有一个4.mp3文件。
java0217
  |----music
  |         |---4.mp3
  |----1.mp3
  |----2.mp3
  |----3.mp3

主函数中调用showDir(dir)时,转到第一层showDir(File dir)方法;
第一层showDir方法:
参数java0207的字符串形式首先被打印出来;
File[] files=dir.listFiles(); //扫描java0207文件夹中的内容,以文件对象的形式保存到files名称的File数组中,
此时files数组中的内容有music, 1.mp3,  2.mp3 ,  3.mp3 这四个File对象。
下面for循环开始依次开始遍历这四个对象:
首先第一个music是一个文件夹,满足if条件,程序跳转到第二层的showDir方法
       第二层showDir方法:
               首先打印传递进来的文件对象文本形式名称music; 然后扫描music文件夹中的内容,保存到files数组中(此时files数组中
                有一个元素4.mp3这个File对象);
                第二层继续遍历第其中第一个4.mp3文件,是一个文件,不是文件夹,所以进入false语句块,打印文件名称即可。
                本层次递归结束,返回第一层;
第一层继续遍历第二个1.mp3文件,是一个文件,不是文件夹,所以进入false语句块,打印文件名称即可。
第一层继续遍历第三个2.mp3文件,是一个文件,不是文件夹,所以进入false语句块,打印文件名称即可。
第一层继续遍历第四个3.mp3文件,是一个文件,不是文件夹,所以进入false语句块,打印文件名称即可。
所有调用语句结束。



作者: 我为你着迷    时间: 2014-5-21 21:47
波涛 发表于 2014-5-21 21:36
好的,假如D:\java0217文件中有1.mp3   2.mp3   3.mp3三个文件和一个叫music的文件夹, 它的里面有一个4.mp3 ...

谢谢你啊  哥们  辛苦了  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2