더북(TheBook)

1.1.1 재귀 함수로 팩토리얼 구현하기

수학에서 어떤 수 n의 팩토리얼(factorial)은 1부터 n까지 곱을 의미하고 n!이라고 표기합니다. 예를 들어 4!이라면 다음과 같은 의미입니다. 참고로 특수한 경우로 0!은 1입니다.

4! = 1×2×3×4

식 4!은 다음과 같이 풀어 쓸 수도 있습니다. 3!이 1에서 3까지 곱을 의미하니까요.

4! = 3!×4

식을 보니 뭔가 부분적으로 되풀이되는 모습입니다. 이를 일반화해서 어떤 자연수 n에 대해 다음 식으로 표현할 수 있습니다.

n! = (n-1)!×n

이 식을 파이썬 코드로 표현해 봅시다.

코드 1-1

def factorial(n):
    return factorial(n-1)*n # 1

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

# 2에서 factorial 함수를 호출하고 있습니다. 호출된 함수는 # 1 라인을 만나고, 다시 factorial 함수를 호출합니다. 이와 같이 실행 도중에 자기 스스로를 다시 호출하는 함수가 재귀 함수입니다. 코드만 보면 잘 실행될 것 같습니다. 하지만 이렇게 구현하고 실행하면 에러가 발생합니다.

RecursionError: maximum recursion depth exceeded

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