팩토리얼(Factorial)은 1부터 해당 숫자까지의 모든 정수를 곱한 값입니다. 예를 들어 5의 팩토리얼은 5 × 4 × 3 × 2 × 1 = 120이 됩니다.
재귀 함수(recursive function)란 자기 자신을 다시 호출하는 함수를 말합니다. 재귀는 반복적인 작업을 간결하고 직관적으로 표현할 수 있게 해주는 강력한 프로그래밍 기법입니다.
재귀로 팩토리얼 구현하기
아래 프로그램의 factorial() 함수는 하나의 인자를 받아, 값이 1에 도달할 때까지 자신을 계속 호출하면서 인자 값을 1씩 줄여 나갑니다.
예제 코드
def factorial(x):
if x == 1:
return 1
else:
return x * factorial(x - 1)
f = factorial(5)
print("factorial of 5 is", f)실행 결과
factorial of 5 is 120
동작 원리
이 코드가 실행되는 과정을 단계별로 살펴보면 다음과 같습니다.
factorial(5) → 5 * factorial(4) → 4 * factorial(3) → 3 * factorial(2) → 2 * factorial(1)
x가 1이 되면 재귀 호출이 멈추고 1을 반환합니다. 이후 각 단계의 결과가 거꾸로 곱해지면서 최종적으로 120이라는 결과가 출력됩니다.
주의 사항
재귀 함수에는 반드시 종료 조건(base case)이 있어야 합니다. 위 예제에서는 x == 1일 때 재귀 호출을 중단하도록 처리했습니다. 종료 조건이 없으면 함수가 무한히 자신을 호출하게 되어 파이썬의 최대 재귀 깊이(RecursionError) 제한에 걸리게 됩니다.