2017-06-18 92 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

简单的雁针是

您正在处理递归数据结构(目录树)。因此,您要么执行递归,这是最简单的方法,要么使用堆栈保留当前的目录列表。

当然,您可以先将其平坦化,然后使用此方法创建一切的平面列表。你可以用简单的循环打印清单。