黑马程序员技术交流社区
标题:
关于递归的问题
[打印本页]
作者:
我为你着迷
时间:
2014-5-21 20:43
标题:
关于递归的问题
import java.io.*;
class FileDemo3
{
public static void main(String[] args)
{
File dir=new File("d:\\java0217");
showDir(dir);
}
public static void showDir(File dir)
{
System.out.println(dir);
File[] files=dir.listFiles();
for(int x=0; x<files.length;x++)
{
if(files[x].isDirectory())
showDir(files[x]);
else
System.out.println(files[x]);
}
}
}
复制代码
大家好 关于这段代码的递归的流程问题 不是很懂 哪位好心的大神帮忙详细解答下啊 谢谢了
作者:
波涛
时间:
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