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) 호출을 정지시켜 줄 기저 사례가 필요합니다. 다음 절에서 재귀 함수를 구현하는 방법과 재귀 함수가 실제로 어떻게 작동하는지 알아보겠습니다.

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