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