2017-06-18 93 views
1
static void PrintDirectories(string path, int level = 0) 
    { 
     string[] dirs = Directory.GetDirectories(path); 
     for (int i = 0; i < dirs.Length; i++) 
     { 
      for (int j = 0; j < level; j++) 
      { 
       Console.Write("\t"); 
      } 
      Console.WriteLine(dirs[i]); 
      PrintDirectories(dirs[i], level + 1); 
     } 
    } 

有什麼辦法來寫與迭代方法這個遞歸代碼,而無需使用棧和單,我的想法和互聯網還沒有給我一個直接的答案。通過文件循環迭代

+2

你的意思是像使用[Directory.GetDirectories'的超載版本](https://msdn.microsoft.com/en-us/library/ms143314(v = vs.110).aspx),它允許你指定搜索子目錄? – UnholySheep

+0

@UnholySheep不,我的意思是使用它的普通版本 –

回答

2

簡單的雁針是

您正在處理遞歸數據結構(目錄樹)。因此,您要麼執行遞歸,這是最簡單的方法,要麼使用堆棧保留當前的目錄列表。

當然,您可以先將其平坦化,然後使用此方法創建一切的平面列表。你可以用簡單的循環打印清單。