이 질문은 일반적인 내용이지만 구체적인 예를 들어 설명하는 것이 가장 좋습니다. 많은 하위 디렉토리가 중첩 된 디렉토리가 있고 그 하위 디렉토리 중 일부에는 ".txt"로 끝나는 텍스트 파일이 있다고 가정 해 보겠습니다. 샘플 구조가 될 수있다 :호출간에 재귀 함수의 스택 위치 유지
dir1
dir2
file1.txt
dir3
file2.txt
file3.txt
연속 텍스트 파일을 반환하기 위해 호출 할 수있는 방법을 구축 자바 방법이 있다면 내가 관심이있을 것 : 여기입니다
TextCrawler crawler = new TextCrawler(new File("dir1"));
File textFile;
textFile = crawler.nextFile(); // value is file1.txt
textFile = crawler.nextFile(); // value is file2.txt
textFile = crawler.nextFile(); // value is file3.txt
가 챌린지 : 모든 텍스트 파일의 내부 목록을 크롤러 개체에 저장할 수 없습니다. 그것은 사소한 일이다. 이 경우 파일 목록을 재귀 적으로 만드는 메서드를 초기화로 빌드하면됩니다.
일반적인 방법으로 재귀 메서드를 일시 중지하므로 다시 호출 할 때 스택의 특정 지점으로 돌아갑니다. 아니면 각 상황에 맞는 것을 작성해야하며 솔루션은 파일 크롤러, 조직도 검색, 재귀 프라임 파인더 등으로 반드시 달라야합니다.
이'nextFile() '메소드가 상태가없는 상태를 가지기를 원하십니까? –
재귀 함수에는 일반적으로 참조 투명성이 있습니다. 당신이해야 할 일은 동일한 매개 변수를주는 것 뿐이며 동일한 작업을 수행합니다. – 4castle
@ tirpitz.verus 재귀 적 검색을 시작할 때 재사용 할 일반 상태 정보를 저장할 수있는 객체 '크롤러'가 필요하다고 생각합니다. – Vesper