#include<bits/stdc++.h>
int N;
using namespace std;
void underbar(int x){
for(int i=0;i<(N-x);i++){
cout << "____";
}
}
void func(int c){
underbar(c);
cout << "\"재귀함수가 뭔가요?\"\n";
if(c==0){
underbar(c);
cout << "\"재귀함수는 자기 자신을 호출하는 함수라네\"" << '\n';
}else{
underbar(c);
cout << "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n";
underbar(c);
cout << "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n";
underbar(c);
cout << "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n";
func(c-1);
}
underbar(c);
cout << "라고 답변하였지.\n";
}
int main(void){
ios::sync_with_stdio(0);cin.tie(0);
cin >> N;
cout << "어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n";
func(N);
}
재귀함수 이해하기에 재밌는 문제였다.
입력을 정수 N 하나만 받아서, 예제출력을 분석해 코드를 짜야했다.
어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.
---
"재귀함수가 뭔가요?"
"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
---
____"재귀함수가 뭔가요?"
____"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
____마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
____그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
---
________"재귀함수가 뭔가요?"
________"재귀함수는 자기 자신을 호출하는 함수라네"
---
________라고 답변하였지.
____라고 답변하였지.
라고 답변하였지.
재귀함수를 이용해서 풀 때,
어느 한 컴퓨터공학과 ~ 이 문장은 main 에서 출력해줘야 한다.
함수 원형 : void func(int c)
base condition : c==0 일 때, “재귀함수는 자기 자신을 호출하는 함수라네” 를 출력해준다."
이외에는 잘 들어보게 ~~
를 출력해야한다.
재귀함수 호출 후에는 라고 답변하였지.
를 출력한다.
언더바를 출력해주는 함수를 따로 만들었는데,
N==2
일 때, 언더바의 갯수는 0,4,8
개 이다.
c 를 1씩 감소시키면서 호출하니까, 언더바 4개를 $N-c$ 번 호출하면 된다.