[재귀] C11 백준 17478 재귀함수가 뭔가요? 풀이

New Jenice!·2024년 11월 22일
0

Daily Algorithm

목록 보기
30/71
post-thumbnail

문제

풀이 과정

  • 이 문제는 좀 쉽다, 예제 출력보면 n이 2일 때
i=1 수행 시 예상 출력

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

i=2 (즉, n에 도달하면)
________"재귀함수가 뭔가요?"
________"재귀함수는 자기 자신을 호출하는 함수라네"
________라고 답변하였지.

이 후 닫히면서 반복
____ 라고 답변하였지.
라고 답변하였지.
  • 그렇다면,
    • i는 0부터 시작하여 n까지 재귀
    • 베이스코드는 i가 n이 되면 교수 답변 출력
    • 재귀 끝나고 빠져나오면 마지막 답변 출력
  • 이 문제에서 주의해야 할 점이 있다면 "< 쌍따옴표가 있기 때문에 \ 이거 사용해서 출력해야 하고 \n를 잘 사용해야 한다
#include <stdio.h>

int n;

void lessthan(int x) {
    for (int i=0; i<x; i++) {
        printf("____");
    }
}

void func(int i) {
    lessthan(i);
    printf("\"재귀함수가 뭔가요?\"\n");
    
    if (i == n) {
        lessthan(i);
        printf("\"재귀함수는 자기 자신을 호출하는 함수라네\"\n");
        lessthan(i);
        printf("라고 답변하였지.\n");
        return;
    }
    
    lessthan(i);
    printf("\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n");
    lessthan(i);
    printf("마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n");
    lessthan(i);
    printf("그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n");
    
    func(i+1);
    
    lessthan(i);
    printf("라고 답변하였지.\n");
}

int main() {
    scanf("%d", &n);
    
    printf("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n");
    func(0);
    
    return 0;
}

profile
Embedded Software Engineer

0개의 댓글