상세 컨텐츠

본문 제목

17478. 재귀함수가 뭔가요?

Algorithm

by aeongiii 2024. 11. 14. 17:28

본문


1. 문제 분석
    1) 재귀 횟수 N을 입력받는다.
    2) 기본 호출 1번 + N번 재귀함수를 호출한다.

2. 제약 조건
   1 ≤ N ≤ 50

3. 의사결정
    1) N을 입력받는다.
    2) 재귀함수를 기본 1번 + N번 호출한다.

4. 문제 해결
    1) underBar를 어디에 위치하느냐로 혼동을 겪었다. 스택이 생기고 사라질때마다 underBar가 변경되기 위해 재귀함수의 파라미터로 넣었다.
    2) 큰따옴표 오타

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // 재귀함수 호출 횟수
        int N = Integer.parseInt(br.readLine());
        String underBar = "";

        System.out.println("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.");
        response(N, underBar);
    }

    // 재귀함수
    public static void response(int N, String underBar) {
        System.out.println(underBar + "\"재귀함수가 뭔가요?\"");

        if (N == 0) {
            System.out.println(underBar + "\"재귀함수는 자기 자신을 호출하는 함수라네\"");
            System.out.println(underBar + "라고 답변하였지.");
            return;
        }

        System.out.println(underBar + "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.");
        System.out.println(underBar + "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.");
        System.out.println(underBar + "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"");

        // 다음 재귀 호출을 위한 underBar 추가
        response(N - 1, underBar + "____");

        // 현재 재귀 깊이에서의 underBar로 "라고 답변하였지." 출력
        System.out.println(underBar + "라고 답변하였지.");
    }
}

 

'Algorithm' 카테고리의 다른 글

2675. 문자열 반복  (0) 2024.11.15
메모이제이션(Memoization)  (0) 2024.11.14
9184. 신나는 함수 실행  (1) 2024.11.14
10994. 별 찍기 - 19  (0) 2024.11.14
25501. 재귀의 귀재  (0) 2024.11.14

관련글 더보기