嘿,即時通訊嘗試創建目錄中的所有文件的名稱(帶擴展名)列表,以及所有文件,但我需要使用遞歸算法。林不知道如果我在正確的軌道上!很新的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