더북(TheBook)

RecursionError이니 재귀와 관련된 에러이군요. 자세히 읽어 보면 최대 재귀 깊이를 초과했다고 합니다. 이 에러가 의미하는 바는 잠시 뒤에 살펴보도록 하고, 우선 이 코드를 무사히 잘 작동하도록 만들어 보겠습니다. 코드를 다음과 같이 수정하세요.

코드 1-2 factorial.py

def factorial(n):
    # base case
    if n <= 0: # 1
        return 1
    return n*factorial(n-1)

if __name__ == "__main__":
    for i in range(1, 6):
        print(factorial(i))

# 1을 보면 매개변수 n0일 때, 즉 0!일 때 1을 반환하도록 되어 있습니다. 이 코드를 실행하면 다음과 같이 잘 출력되는 것을 알 수 있습니다.

1
2
6
24
120

# 1처럼 재귀 함수가 더 이상 호출되지 않도록 하는 ‘특정 조건’을 기저 사례(base case)라고 합니다. 기저 사례도 잠시 뒤에 살펴보겠습니다.

여기까지 간단한 예제로 알아낸 것은 두 가지입니다. 재귀 함수를 구현하려면 1) 언제 어떤 매개변수를 가지고 호출할지 정해야 하고, 2) 호출을 정지시켜 줄 기저 사례가 필요합니다. 다음 절에서 재귀 함수를 구현하는 방법과 재귀 함수가 실제로 어떻게 작동하는지 알아보겠습니다.

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