2013-02-28 117 views
1

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

+1

1)爲什麼你需要* *遞歸算法?這可以非遞歸地實現。 2)'遞歸'意味着你的方法以某種方式調用自己。 – Corey 2013-02-28 06:44:10

+1

http://stackoverflow.com/questions/6061957/get-all-files-and-directories-in-specific-path-fast – 2013-02-28 06:44:48

+0

我的軟件工程的朋友說使用遞歸算法會更容易 – user2118473 2013-02-28 06:56:06

回答

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