더북(TheBook)


1.1팩토리얼


팩토리얼은 어떤 수의 계승으로 1부터 어떤 수까지의 곱을 말합니다. 3의 계승은 3×2×1을 의미합니다. 이를 3!로 표현하고 ‘3팩토리얼’이라고 읽습니다. 팩토리얼의 수학적 성질을 살펴보면 다음과 같습니다.

1| n! = (n–1)!×n
3! = 2!×n

2| n = 0 or 1 이면 n! = 1


우선 1번 성질을 이용하여 재귀 함수를 만들어 보겠습니다.

코드 13-1 factorial.py ①

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

if __name__ = = "__main__":
    n = 3
    res = factorial(n)
    print("The factorial of {} is {}".format(n, res))


factorial() 함수를 정의하는 도중에 다시 factorial() 함수가 등장했습니다(#1). 이러한 형태의 함수가 바로 재귀 함수입니다. 그런데 실행을 하면 다음과 같은 오류가 발생합니다.


실행결과 RecursionError: maximum recursion depth exceeded

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