2017-12-07 21 views
0

나는 내 과제를 수행 할 사람을 찾고 싶지 않습니다. 과제의 재귀적인 부분에 관해서 묻는 것이 무엇인지에 대해 확신 할 수 없습니다.파일 시스템을 순회하는 재귀 함수의 for-each 루프가 두 개 있습니다.

For each ChildContainer item in dir 
Create an OrderedList of names 
For each ChildData item of the ChildContainer 
Add the ChildData name to the OrderedList of names 

왜 명령의 재귀 부분에 두 개의 for each 문이있다 :

이 디렉토리를 열고 컴퓨터의 파일을 열 수있는 재귀 함수는?

+0

StackOverflow에 오신 것을 환영합니다! 게시물로 약간의 비틀기를 만들어 의사 코드를 코드로 형식화했습니다. 각 행을 4 칸 들여 쓰기하여이 작업을 수행 할 수 있습니다. 질문을 할 때 질문을 확인하기 위해 제출하기 전에 미리보기를 확인하는 것이 좋습니다. 그러면 쉽게 답변을 얻을 수 있습니다. 또한 태그를 변경 한 이유는 이것이 자바에만 한정되지는 않았지만 재귀에 관한 질문 일 뿐이 기 때문입니다. – DaveyDaveDave

답변

0

okies,

첫째로이 그것이 https://softwareengineering.stackexchange.com/

에 요청해야 프로그래밍 이론 질문 난 당신이 재귀 함수/방법의 포인트를 놓치고 생각을의 프로그래밍 질문이 아니다으로 StackOverflow의이어야한다 이리. 재귀 함수의 요점은 그것이 당신을 위해 중첩을한다는 것입니다. 그래서 foreach를 다른 foreach 안에 중첩시킬 필요가 없습니다.

이것은 어떻게 수행 할 것인지에 대한 개요이지만, 이것이 과제라고 말한대로 코드를 제공하지 않겠습니다. 나는 표절을지지하지 않는다.

PlaceToStore = array of array of dir path (string); 

function scanPath(pathToOpen, PlaceToStore){ 
    where dirHandle equals directory reader 
    where childrenArray = dirHandle->getChilden 
    foreach child in childrenArray do 
     if(child is directory) then 
      scanPath(child->path, PlaceToStore[child->path] 
     else 
      placeToStore[child->path] = child->path 
     end if 
    endforeach 
} 
지금이 예제는 그것을 할 수있는 지저분한 방법의 빠른 개요는하지만 재귀가에서 수행해야하는 방법을 보여줍니다 당신의 childData 다른 디렉토리 각각에 대한 이중이 필요하거나

파일 안

이해하기 쉬운 예.