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

파이썬으로 팩토리얼(계승) 계산하기 – 재귀와 반복 두 가지 방법

이 글에서는 주어진 문제를 해결하기 위한 접근 방식과 솔루션을 알아보겠습니다.

문제 정의

주어진 과제는 n의 팩토리얼(계승)을 계산하는 것입니다.

팩토리얼은 음이 아닌 정수에 대해 다음과 같이 정의됩니다.

n! = n × (n-1) × (n-2) × (n-3) × ................. × 3 × 2 × 1

예를 들어 5! = 5 × 4 × 3 × 2 × 1 = 120이 됩니다.

이 문제는 크게 두 가지 방법으로 해결할 수 있습니다.

  • 재귀(Recursive) 방식
  • 반복(Iterative) 방식

방법 1 – 재귀(Recursive) 접근

재귀 방식은 함수가 자기 자신을 다시 호출하는 방식으로 문제를 해결합니다. n이 0 또는 1이면 1을 반환하고, 그 외의 경우에는 n에 (n-1)의 팩토리얼 값을 곱하여 반환합니다.

예제 코드

def factorial(n): # 재귀적 해결 방법
    if (n==1 or n==0):
        return 1
    else:
        return n * factorial(n - 1)
# 메인
num = 6
print("Factorial of",num,"is", factorial(num))

출력 결과

('Factorial of', 6, 'is', 720)

위 코드에서 사용된 모든 변수는 아래 이미지와 같이 전역 범위(global scope)로 선언되어 있습니다.

파이썬으로 팩토리얼(계승) 계산하기 – 재귀와 반복 두 가지 방법

방법 2 – 반복(Iterative) 접근

반복 방식은 for 루프를 사용하여 2부터 n까지의 모든 수를 차례대로 곱해 나갑니다. 재귀 호출에 따른 함수 호출 오버헤드가 없기 때문에 일반적으로 더 효율적입니다.

예제 코드

def factorial(n): # 반복적 해결 방법
    fact=1
    for i in range(2,n+1):
        fact=fact*i
    return fact
# 메인
num = 6
print("Factorial of",num,"is", factorial(num))

출력 결과

('Factorial of', 6, 'is', 720)

위 코드에서 사용된 모든 변수는 아래 이미지와 같이 전역 범위(global scope)로 선언되어 있습니다.

파이썬으로 팩토리얼(계승) 계산하기 – 재귀와 반복 두 가지 방법

결론

이 글에서는 숫자 n의 팩토리얼을 계산하는 두 가지 방법, 즉 재귀 방식과 반복 방식을 살펴보았습니다. 작은 입력값에서는 두 방법 모두 잘 동작하지만, 재귀 방식은 호출 깊이가 깊어질 경우 스택 오버플로우가 발생할 수 있으므로 큰 수를 다룰 때는 반복 방식이 더 안전하고 효율적인 선택입니다.