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