ub = ""
global a
a = 0
def first(t, a):
print("____" * a + '\"재귀함수가 뭔가요?\"')
print("____" * a + '\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.')
print("____" * a + '마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.')
print("____" * a + '그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"')
if a == t-1:
print("____" * (a+1) + '\"재귀함수가 뭔가요?\"')
print("____" * (a+1) + '\"재귀함수는 자기 자신을 호출하는 함수라네\"')
print("____" * (a+1) + "라고 답변하였지.")
else:
first(t, a+1)
def end(t):
if t == 0: # t가 하나씩 감소해서 0이 될때
return print("라고 답변하였지.")
else:
print("____" * t + "라고 답변하였지.")
end(t-1)
t = int(input())
print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.")
first(t, a)
end(t-1)
맞긴 맞았으나, 풀이가 좀 너무 길고 복잡한 측면이 있어서 global 변수 없이 재귀만으로 풀 수 있는 방법을 찾아보았다.
n = int(input())
def recur(i, n):
print("____"*i + '"재귀함수가 뭔가요?"')
if i == n: # 하나씩 더해준 i값이 n과 같을 때
print("____"*i + '"재귀함수는 자기 자신을 호출하는 함수라네"')
else: # 하나씩 더해준 i값이 n과 같지 않을 때
print("____"*i + '"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.')
print("____"*i + "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.")
print("____"*i + '그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."')
recur(i+1, n) # 매개변수 0으로 받은 값을 하나씩 더해줌
print("____"*i + "라고 답변하였지.") # i가 n과 같을 때 실행됨 (잘 이해 안되는 부분)
print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.")
recur(0, n) # 따로 global 변수를 주지 않고 매개변수 0을 그냥 줌! => i를 0부터 시작
import sys
n = int(sys.stdin.readline())
print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.")
def first(k):
if k == n:
print(k*"____" + '"재귀함수가 뭔가요?"')
print(k*"____" + '"재귀함수는 자기 자신을 호출하는 함수라네"')
print(k*"____" + '라고 답변하였지.')
second(k-1)
return
print(k*"____" + '"재귀함수가 뭔가요?"')
print(k*"____" + '"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.')
print(k*"____" + '마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.')
print(k*"____" + '그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."')
first(k+1)
def second(k):
if k == 0:
print('라고 답변하였지.')
return
print(k*"____" + '라고 답변하였지.')
second(k-1)
first(0)