2011-03-03 8 views
3

알고리즘을 찾고 있었으므로 OS가 재귀를 사용하지 않고 폴더를 반복하는 방법에 문제가 없습니다.반복없이 폴더를 반복합니다.

재귀는 "무한대"이상으로 이동할 수 없으며 "while 루프"가 거기에 도달 할 수 있기 때문에 재귀가 대답이 아닙니다.

프로그래밍 언어는 중요하지 않습니다.

+1

OS는 무엇입니까? –

+1

해결하려는 문제는 무엇입니까? 재귀가 왜 대답이 아닌가? –

+0

알고리즘을 찾고 있었기 때문에 OS는 문제가되지 않습니다. 재귀는 "무한대"로 갈 수 없기 때문에 재귀는 대답이 아니지만 "while 루프"는 갈 수 있습니다. – Vizualni

답변

4

depth-first 트래 버럴에 대해 stack 데이터 구조를 사용할 수 있습니다. C#의 샘플 코드는 다음과 같습니다.

var stack = new Stack<string>(); 

    stack.Push(@"C:\"); 

    while (stack.Count > 0) 
    { 
     var currentDirectory = stack.Pop(); 
     Console.WriteLine("Visiting: " + currentDirectory); 

     foreach (var childDirectory in Directory.GetDirectories(currentDirectory)) 
     { 
      stack.Push(childDirectory); 
     } 
    } 
+0

감사합니다. 완벽하게 작동합니다. :) – Vizualni

+0

물론, 처음에는 재귀를 사용했다면, 이것은 컴파일러가 당신을 위해 무엇을했는지 수동으로 복사하는 것입니다. –