public class Recursive {
    public static void main(String[] args) {
        // 재귀함수 배워보기
        Recursive rc = new Recursive();
        rc.DFS(3);
    }

    // 1. DFS 함수 만들기
    public void DFS(int n){
        // 3. if문으로 멈춰주기
        if(n==0){
            return;
        } else {
            // 2. 자기 자신을 반복해서 재귀하게 만듦!
            DFS(n - 1);
            System.out.print(n + " "); // 4. Stack 형태로 위치 중요 ! 위에 
        }
    }
}

재귀함수기초 문제

 

먼저 public void DFS라는 함수를 선언해주고,

그 다음 자기 자신을 반복하는 재귀함수를 안에다 넣어준다.

조건에 맞게 if문을 걸어줘서 return을 이용해서 끝내주면 된다!

 

이러면 스택프레임으로 스택이 쌓이는 것을 그림으로 그릴 수 있는데

 

예를 들어 2를 넣을 경우

첫 스택에 DFS(2) -> DFS(1) -> DFS(0) 순서대로 실행되고 ,

                DFS(2) -> DFS(1) 로 가는 순간에 아래 라인에 있는 System.out.print는 출력되지 않고 마지막까지 함수를 돌고 

                실행되기 때문에

 

1 2 << 처럼 결과 값을 원하는대로 얻을 수 있다!

+ Recent posts