Как изменить этот рекурсивный цикл с нерекурсивным? Я знаю, что этот метод прост, но меня интересует нерекурсивный способ этого решения.Прогулка дерева папок без рекурсии C#
using System;
using System.IO;
namespace NonRecursion {
class NonRecursion {
static void Main() {
string createPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string getPath = createPath + @"\folder";
GetDirsPath(getPath);
Console.ReadKey();
}
static void GetDirsPath(string getPath) {
string[] dirs = Directory.GetDirectories(getPath);
for (int i = 0; i < dirs.Length; i++) {
Console.WriteLine(dirs[i]);
GetDirsPath(dirs[i]);
}
}
}
}
Могу ли я изменить только эту функцию?
static void GetDirsPath(string getPath) {
string[] dirs = Directory.GetDirectories(getPath);
for (int i = 0; i < dirs.Length; i++) {
Console.WriteLine(dirs[i]);
GetDirsPath(dirs[i]);
}
}
Подсказка: вы хотите использовать Queue <> или Stack <> в 'GetDirsPath' – Sean
Является ли это упражнением или нет? Потому что, если это не упражнение, вы должны посмотреть на версию [GetDirectories] (https://msdn.microsoft.com/en-us/library/ms143314 (v = vs.110) .aspx), которая подходит вам дерево подпапок и возвращает все с помощью одного вызова – Steve
И вы должны выбрать очередь и стек по типу обхода, который вам нужно сделать, будь то ширина или первый. –