문제
풀이 과정
- 이 문제는 좀 쉽다, 예제 출력보면 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;
}
