재귀함수(스택 프레임)

문제

자연수 N이 입력되면 재귀함수를 이용하여 1부터 N까지를 출력하는 프로그램을 작성하세요.

입력

첫 번째 줄은 정수 N(3<=N<=10)이 입력된다.

출력

첫째 줄에 출력한다.

입력예제

3

출력예제

123

해결방법

이미지

  • 출력하고 호출 하는 방식은 순차적으로 진행 되는 것이고 재귀호출 후, 호출이 끝나면 역순으로 실행되도록 하는 것이 DFS 기초에 더 맞는 방식이다.
  • 답변 코드를 잘 확인 해보면, 10부터 들어가지만 실제 재귀호출로 인해 지연 되다가, 마지막에 조건 만나서 끝나는 경우 1부터 차례로 sysout을 한다.

코드

import java.util.*;

class Main {
    public void DFS(int n) {
        // n이 0이면 끝낸다.
        if (n == 0) return;
        else {
            // 1씩 줄여가면서 호출한다.
            DFS(n - 1);
            // 호출이 종료되면 프린트하기 때문에 역순으로 출력된다.
            System.out.print(n + " ");
        }
    }

    public void solution(int n) {
        DFS(n);
    }

    public static void main(String[] args) {
        Main.Main T = new Main.Main();
        T.solution(3);
        //System.out.println(T.solution(3));
    }
}

© 2024. Chiptune93 All rights reserved.