boj 17478 재귀함수가 뭔가요? cpp
백준 17478 재귀함수가 뭔가요? c++
재귀함수를 농으로 설명할 때 다음의 일화를 들려주곤 한다.
그런데 이걸 문제로 내다니.. 단단히 미친 것 같다는 생각이 들었다.
아무튼 원리는 이렇다.
재귀함수는 뭔가요 ~ 그의 답은 대부분~ 부분. (4줄)
재귀함수가 뭔가요 ~ 재귀함수는 자기 자신을 ~ 부분 (2줄)
라고 답변하였지 부분.
이들 조합을 잘 살펴보면 다음의 구조를 갖는다는 것을 알 수 있다.
if depth == 입력받은 iter 변수
2줄 출력.
else
4줄 출력.
재귀
라고 답변하였지 부분 출력.
여기서 depth는 내가 임의로 설정해준 것으로써 0부터 iter 까지 올라간다.
재귀를 거듭할수록 올라가는 것.
depth == iter 부분이 expire되는 지점이다.
정답 코드는 아래와 같다.
#include <bits/stdc++.h>
using namespace std;
void coutDepth(int depth) {
while (depth--) {
cout << "____";
}
return;
}
void recursiveFunc(int iter, int depth) {
if (depth == iter) {
coutDepth(depth);
cout << "\"재귀함수가 뭔가요?\"\n";
coutDepth(depth);
cout << "\"재귀함수는 자기 자신을 호출하는 함수라네\"\n";
coutDepth(depth);
cout << "라고 답변하였지.\n";
}
else {
coutDepth(depth);
cout << "\"재귀함수가 뭔가요?\"\n";
coutDepth(depth);
cout << "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n";
coutDepth(depth);
cout << "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n";
coutDepth(depth);
cout << "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n";
recursiveFunc(iter, depth + 1);
coutDepth(depth);
cout << "라고 답변하였지.\n";
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout << "어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n";
int iter;
cin >> iter;
recursiveFunc(iter, 0);
return 0;
}
'Algorithm' 카테고리의 다른 글
BOJ 1259 팰린드롬수 c++ (0) | 2020.11.09 |
---|---|
BOJ 1085 직사각형에서 탈출 c++ (0) | 2020.11.07 |
boj 1012 c++ 유기농 배추 (0) | 2020.09.07 |
boj 4889 c++ 안정적인 문자열 (0) | 2020.09.04 |
boj 9012 c++ 괄호 (0) | 2020.09.03 |
최근댓글