嘿,即时通讯尝试创建目录中的所有文件的名称(带扩展名)列表,以及所有文件,但我需要使用递归算法。林不知道如果我在正确的轨道上!很新的C#递归算法
Q
递归算法
1
A
回答
4
我通常做这种事情了队列:
// Make sure rootDir exists first...
var files = new List<string>();
var dirs = new Queue<string>();
dirs.Enqueue(rootDir);
while(dirs.Count > 0) {
var dir = dirs.Dequeue();
foreach(var fileName in Directory.GetFiles(dir)) {
files.Add(fileName);
}
foreach(var subDir in Directory.GetDirectories(dir)) {
dirs.Enqueue(subDir);
}
}
// Now populate your list with the files collection.
+0
+1不乱扔堆栈用无用功能不能内联的电话! – 2013-02-28 06:50:56
+0
+1这个模式。尽管我仍然更喜欢递归,因为我认为它更容易遵循(关于C#中缺少尾部的问题 - > CLR编译器)。不过,我更喜欢使用收益而不是列表。 – Aron 2013-02-28 06:59:20
+0
是的,这是基于我的实际代码是作为一个迭代块实现的 - 我使用它来遍历大约1,000,000个xml文件的目录结构... – 2013-02-28 07:04:17
1)为什么你需要* *递归算法?这可以非递归地实现。 2)'递归'意味着你的方法以某种方式调用自己。 – Corey 2013-02-28 06:44:10
http://stackoverflow.com/questions/6061957/get-all-files-and-directories-in-specific-path-fast – 2013-02-28 06:44:48
我的软件工程的朋友说使用递归算法会更容易 – user2118473 2013-02-28 06:56:06