【发布时间】:2013-12-10 09:00:22
【问题描述】:
我编写这段代码是为了在 c# 中递归列出文件和文件夹。
var filesInTheCurrentDirectory = System.IO.Directory.GetFiles(rootFolder);
if (!filesInTheCurrentDirectory.Any() && !System.IO.Directory.GetDirectories(rootFolder).ToList().Any())
{
return;
}
filesInTheCurrentDirectory.ToList().ForEach(file => System.IO.File.AppendAllText("e:\\personal\\tests.txt", System.IO.Path.GetFileName(file) + ":" + rootFolder + "\n"));
System.IO.Directory.GetDirectories(rootFolder).ToList().ForEach(recursivePrintFolders);
虽然这只是效果很好,但问题是:
我正在使用递归。这是
best吗? (我尝试编写一个非递归函数,但因为我们事先不知道每个文件夹的深度是多少而坚持了下来)。如何评估此功能的性能?是
OlogN还是O(n)? (我很困惑,因为没有循环版本。据我所知,如果有两个for循环,我可以称之为O(n^2)。)
有什么想法或指导吗?
【问题讨论】:
-
为什么不直接使用 overload of the method you're using 为您处理这个问题?
-
你能发布你的非递归函数吗?
-
@DanPuzey 更正:那是超载:)
-
@SriramSakthivel:更正!星期一... ;-)
-
什么是
n?如果这是文件数 + 文件夹数,那么是的,O(n) 听起来是正确的(您为每个文件/文件夹做了大量的工作)。
标签: c# data-structures file-io recursion .net-4.0