问题描述
- 求大神将下面递归算法改为非递归算法,万分感谢
-
public void void processFilePath(String sourceDir) {
File file = new File(eachSource);
if (file.isDirectory()) {for (File each : file.listFiles()) {
processFilePath(each.getAbsolutePath());
}} else if (file.getAbsolutePath().endsWith(".java")) {
System.out.println(file.getAbsolutePath());
}}
解决方案
你这个貌似就是递归啊!
解决方案二:
你要找的是不是这个?
public static void scanDirNoRecursion(String path){
int num = 0 ;
LinkedList list = new LinkedList();
File dir = new File(path);
File file[] = dir.listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory())
list.add(file[i]);
else{
System.out.println(file[i].getAbsolutePath());
num++;
}
}
File tmp;
while (!list.isEmpty()) {
tmp = (File)list.removeFirst();//首个目录
if (tmp.isDirectory()) {
file = tmp.listFiles();
if (file == null)
continue;
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory())
list.add(file[i]);//目录则加入目录列表,关键
else{
System.out.println(file[i]);
num++;
}
}
} else {
System.out.println(tmp);
num++;
}
}
}
解决方案四:
如果你只是要找一个非递归的程序,自然可以google下,但是这种程序往往和你的程序没什么关系。但是如果你是想掌握一般地,将一个递归算法转为非递归的规律(直接根据程序转,无需考虑别的算法)。我可以给你一些指导。
具体来说,就是使用堆栈来模拟递归,http://bbs.csdn.net/topics/390317050
解决方案五:
思路就是把所有的文件夹都存起来 然后对这个循环 就是楼上给的代码