<< 문제 >>
https://www.acmicpc.net/problem/17478
17478번: 재귀함수가 뭔가요?
평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대
www.acmicpc.net
<<풀이>>
재귀함수가 뭔가요?
"재귀함수는 자기 자신을 호출하는 함수라네"
이 문제에 나온 대로 재귀함수는 자기 자신을 호출하는 함수입니다.
쉽게 생각하면 a라는 함수 안에 a를 호출하는 코드가 존재한다는 것입니다.
이게 생각보다 이해가 잘 안되는데 그림으로 설명하면 다음과 같습니다.
모든 차수가 같은 a라는 함수를 실행한다는 점이 중요합니다.
사실 저 같은 초보자에게는 좀 어려운 개념입니다.
그래도 이 문제는 좀 쉬운편이네요.
<<코드>>
#include <stdio.h>
/*
BaekJoon_17478 : 재귀함수가 뭔가요?
input = 숫자 단 하나
*/
void makeUnderscore(int numCount){
for (int i = 0; i < numCount; i++) {
printf("%s", "____");
}
}
void printStory(int numCount, int numInput) {
// 첫 회차에만 출력
if (numCount == 0) {
printf(
"%s",
"어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n");
}
makeUnderscore(numCount);
printf("%s", "\"재귀함수가 뭔가요?\"\n");
if (numInput == numCount) {
makeUnderscore(numCount);
printf("%s", "\"재귀함수는 자기 자신을 호출하는 함수라네\"\n");
return;
}
makeUnderscore(numCount);
printf(
"%s",
"\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 "
"선인이 있었어.\n");
makeUnderscore(numCount);
printf(
"%s",
"마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 "
"대답해 주었지.\n");
makeUnderscore(numCount);
printf(
"%s",
"그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 "
"찾아와서 물었어.\"\n");
numCount++;
printStory(numCount, numInput);
makeUnderscore(numCount);
printf("%s", "라고 답변하였지.\n");
if (numCount == 1) {
printf("%s", "라고 답변하였지.\n");
}
}
int main() {
int numInput;
scanf("%d", &numInput);
int numCount = 0;
printStory(numCount, numInput);
}
Underscore == _
그림에 나타낸 것처럼 1차 2차 회차를 올려가며 목표 회차에 도달했을 때 그 회차의 함수를 종료시키면 그 전 회차 함수들이 순서대로 종료됩니다.
<<깃헙>>
https://github.com/J2on/BaekjoonOnlineJudge/blob/master/V2/BaekJoon_17478.cpp
GitHub - J2on/BaekjoonOnlineJudge: My Study
My Study. Contribute to J2on/BaekjoonOnlineJudge development by creating an account on GitHub.
github.com
< 백준 BaekJoon : 10815번 숫자 카드 > C++ (0) | 2022.07.19 |
---|---|
< 백준 BaekJoon : 2108번 통계학 > C++ (0) | 2022.07.16 |
< 백준 BaekJoon : 2480번 주사위 세개 > C++ (0) | 2022.07.13 |
< 백준 BaekJoon : 2525번 오븐시계 > C++ (0) | 2022.07.10 |
< 백준 BaekJoon : 25083번 새싹 > C++ (0) | 2022.07.08 |
댓글 영역