Реализовать перебор поддиректорий через рекурсию - C#

Узнай цену своей работы

Формулировка задачи:

Необходимо реализовать перебор поддиректорий через рекурсию Выводит только с первой папки:
private void ListOfCatalogs(string url, int i, DirectoryInfo dir)
        {
            if(i<dir.GetDirectories().Length)
            {
                var item = dir.GetDirectories()[i].Name;
                Console.WriteLine(item);
 
                if ((new DirectoryInfo(url + '\\' + item)).Exists)
                {
                    url += '\\' + item;
                    DirectoryInfo di = new DirectoryInfo(url);
                    int t = 0;
                    ListOfCatalogs(url, t++, di);
                }
 
                ListOfCatalogs(url, ++i, dir);
            }   
        }
Как исправить?

Решение задачи: «Реализовать перебор поддиректорий через рекурсию»

textual
Листинг программы
        private IEnumerable<DirectoryInfo> ListOfCatalogs(DirectoryInfo dir)
        {
            yield return dir;
            foreach (var subDir in dir.EnumerateDirectories())
            foreach (var child in ListOfCatalogs(subDir))
                yield return child;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.25 из 5
Похожие ответы