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);
}
}
有没有办法用迭代方法编写这个递归代码而不使用堆栈和列表,我没有想法,互联网还没有给我一个直接的答案。
答案 0 :(得分:2)
简单的anser是没有。
您正在处理递归数据结构(目录树)。所以,你要么做递归,这是最简单的方法,要么使用堆栈来保存当前的目录列表。
当然,您可以先使用此方法展平它,创建一个包含所有内容的平面列表。比你可以在一个简单的循环中打印列表。