반응형
재귀함수
함수 안에서 자기 자신을 다시 호출하는 함수로, 무한 루프에 빠지지 않기 위해서는 더이상 자기자신을 호출하지 않는 종료 조건을 잘 정해야 한다.
문제풀이
입력받은 N만큼 자기 자신을 호출하면 되므로, 재귀함수의 파라미터로 목표 depth와 현재 depth를 준 후, 자기 자신을 호출할 때는 depth에 1을 더해서 호출한다.
depth가 N보다 작은 경우에는 아래의 글들을 프린트하되, 각 문장 앞에 ____를 depth번 반복하여 프린트 한 후, depth에 1을 더해서 자기자신을 다시 호출한다.
"재귀함수가 뭔가요?"
"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
반면 depth가 N일 경우에는 아래의 문장 앞에 ____를 depth번 반복하여 프린트하고, 함수 호출은 하지 않는다.
"재귀함수가 뭔가요?"
"재귀함수는 자기 자신을 호출하는 함수라네"
마지막으로, 모든 depth에서 위의 경우에는 함수 호출을 한 후, 아래 경우에는 주어진 두 줄을 프린트 한 후 앞에 ____를 depth번 반복하여 프린트 한후, 아래의 문장을 프린트한다.
라고 답변하였지.
Python Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
a="\"재귀함수가 뭔가요?\""
b="\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어."
c="마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지."
d="그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\""
last_b="\"재귀함수는 자기 자신을 호출하는 함수라네\""
dap="라고 답변하였지."
bar="____"
def recur(goal, now):
temp = bar*now
print(temp+a)
if now < goal:
print(temp+b)
print(temp+c)
print(temp+d)
recur(goal,now+1)
else:
print(temp+last_b)
print(temp+dap)
if __name__ == "__main__":
n = int(input())
print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.")
recur(n,0)
|
cs |
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 2869 달팽이는 올라가고 싶다 (0) | 2020.03.09 |
---|---|
백준 1890 점프 (0) | 2020.03.09 |
백준 2293 동전 1 (0) | 2020.03.01 |
백준 1038 감소하는 수 (0) | 2020.02.28 |
백준 2157 여행 (0) | 2020.02.27 |