티스토리 뷰

재귀함수 (Recursion Function)

 

함수가 직접 또는 간접적으로 자신을 호출하는 프로세스를 재귀함수라고 한다.

코딩에서는 메서드를 여러개 만드는게 아니고,

이미 만들어진 메서드를 활용할 줄 알아야한다.

 

- 재귀함수는 내부적으로 스택(Stack)을 이용한다.

아래는 재귀함수를 이용한 예시이다.

 

 

하위 디렉토리의 파일 경로를 콘솔에 출력하기

 

package practice01;

import java.io.File;

public class FilePath {

	public static void main(String[] args) {
        /**
         * 디렉토리를 주면 하위 디렉토리, 파일 경로를 콘솔에 출력하세요.
         * C:\\Users\\negga\\Desktop\\재귀함수
         * 
         */
        
        FilePath filePath = new FilePath();
        filePath.run();
    }
    
    private void run() {
        File file = new File("C:\\Users\\negga\\Desktop\\재귀함수");
        findFiles(file);
    }
    
    private void findFiles(File file) {
        
        File[] files = file.listFiles();
        
        for(int i = 0; i < files.length; i++) {
            if(files[i].isDirectory()) {
                System.out.println("디렉토리명 : " + files[i].getAbsolutePath());                
                findFiles(files[i]);
            }else {
                System.out.println("파일명 : " + files[i].getAbsolutePath());
            }                       
        }       
    }
    
}

 

- 실행결과

파일명 : C:\Users\negga\Desktop\재귀함수\test01.txt
디렉토리명 : C:\Users\negga\Desktop\재귀함수\폴더1
파일명 : C:\Users\negga\Desktop\재귀함수\폴더1\test02.txt
디렉토리명 : C:\Users\negga\Desktop\재귀함수\폴더2

 

 

 

 

listFiles() 디렉토리 파일목록을 File 배열로 반환한다.

getAbsolutePath() 현재 실행중인 디렉토리 파일에 입력된 절대 경로 리턴

 

 

 

상대경로와 절대경로

 

절대 경로: 최초의 시작점으로 부터 경유한 경로를 전부 나타냄

              최상위를 포함

상대 경로: 현재 위치를  기준으로 하여 목적지까지의 상대적인 경로를 의미

             최상위를 거치지 않고도 이동이 가능

댓글