Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 재귀 함수로 숫자의 팩토리얼 구하는 방법

팩토리얼(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) 제한에 걸리게 됩니다.