재귀함수는 Recursive함수라고도 불리며, 함수 안에서 본인의 함수를 다시 실행시키는 것을 뜻한다.
운영체제 시간에 배운 내용도 생각나 복습 겸 메모리 영역에 대한 공부를 간단히 정리하였다.

문제 자체는 크게 어렵진 않았고, 20분 근처로 걸린 것 같다. 조금 곤란했던 부분이 처음에 '____' 가 반복되는 부분을 리컬시브 함수 처음에 print(rep * cnt + '"재귀함수가 뭔가요?"')로 해두니 첫 부분이 띄어쓰기가 적용되어 올바르게 출력이 되지 않은 부분이었다. 해당 부분은 조건문을 통해 처음일 경우는 별개로 처리하고 나머지는 문자열 연결을 +로 바꿔주어 해결하였다. 예전에 이미 푼 기록이 있는 문제였다. 예전 코드를 참고하지 않고 재귀를 통해 풀려고 노력했다. 문제를 해결하고 난 후 예전 코드를 보니 시간도 더욱 걸리고 코드도 재귀보단 for반복문으로 해결하였다.
예전 코드
repeat = int(input())
repeat = repeat + 1
print('어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.')
for i in range(0, repeat):
if(i == 0):
print('"재귀함수가 뭔가요?"')
print('"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.')
print('마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.')
print('그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."')
else:
for a in range(0, i):
print('____', end='')
print('"재귀함수가 뭔가요?"')
for b in range(0, i):
print('____', end='')
if i == (repeat-1):
print('"재귀함수는 자기 자신을 호출하는 함수라네"')
break
print('"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.')
for c in range(0, i):
print('____', end='')
print('마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.')
for d in range(0, i):
print('____', end='')
print('그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."')
for i in range(repeat-1, -1, -1):
for a in range(0, i):
print('____', end='')
print('라고 답변하였지.')
재귀를 이용한 코드
rep = '____'
def recur(end, cnt):
if(cnt == end):
return 1
if(cnt == 0):
print('"재귀함수가 뭔가요?"')
print('"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.')
print('마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.')
print('그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."')
recur(end, cnt + 1)
else:
print(rep * cnt + '"재귀함수가 뭔가요?"')
print(rep * cnt + '"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.')
print(rep * cnt + '마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.')
print(rep * cnt + '그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."')
recur(end, cnt + 1)
def recur2(cnt, n):
if(cnt == 0): return
if(cnt == n):
print(rep * cnt + '"재귀함수가 뭔가요?"')
print(rep * cnt + '"재귀함수는 자기 자신을 호출하는 함수라네"')
print(rep * cnt + '라고 답변하였지.')
recur2(cnt-1, n)
n = int(input())
print('어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.')
recur(n, 0)
recur2(n, n)
print('라고 답변하였지.')