더북(TheBook)

자기 자신을 부르는 함수를 재귀적(recursive)이라고 하고, 이를 실행하는 과정을 재귀(recursion)라고 한다. 재귀의 또 다른 예로 문자열을 n번 출력하는 함수도 재귀로 작성해보자.

def print_n(s, n):

if n <= 0:

return

print(s)

print_n(s, n-1)

n <= 0이면 return으로 함수를 종료한다. 이렇게 하면 실행 흐름은 즉시 호출자(caller)로 복귀하고, 함수의 나머지 줄은 실행되지 않는다.

함수의 나머지 부분은 countdown과 비슷하다. 문자열 s를 표시하고, 자기 자신을 호출해 n-1번을 표시하게 한다. 따라서 출력되는 줄의 개수는 1 + (n - 1)이 되고, 이를 계산하면 결국 n개가 된다.

여기서 사용한 것처럼 간단한 예제라면 for 루프를 사용하는 것이 더 쉬울 것이다. 하지만 뒤에 가면 for 루프로는 작성하기 어렵지만, 재귀로는 작성하기 쉬운 예제를 보게 될 것이다. 따라서 재귀는 일찍부터 배워두는 것이 좋다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.