5.8 재귀
함수에서 다른 함수를 호출할 수 있다. 마찬가지로 함수가 자기 자신도 호출할 수 있다. 자기 자신을 호출한다는 게 왜 좋은 것인지 당장 알지는 못하더라도 이게 프로그램이 할 수 있는 가장 마법에 가까운 것이라고 할 수 있다. 예를 들어 다음과 같은 함수가 있다.
def countdown(n):
if n <= 0:
print('Blastoff!')
else:
print(n)
countdown(n-1)
n이 0 또는 음수라면 단어 “Blastoff!”(발사!)를 출력하고, 그렇지 않으면 n을 출력하고 n-1을 인수로 전달하면서 다시 countdown 함수, 즉 자기 자신을 호출한다.
이 함수를 다음과 같이 호출하면 무슨 일이 일어날까?
>>> countdown(3)