HOWTO · Python

Python에서 팩토리얼 계산

이 기사에서는 반복, 재귀를 사용하고 Python에서 내장 수학 모듈을 사용하여 숫자의 계승을 찾는 방법을 알아 봅니다.

이 페이지의 내용

숫자의 계수는 해당 숫자보다 작거나 같은 모든 양의 정수의 곱입니다. 예를 들어, 5의 계승은 5보다 작거나 같은 모든 숫자의 곱입니다. 즉 ‘5 * 4 * 3 * 2 * 1’은 120과 같습니다. 따라서 숫자 5의 계승은 120입니다.

이제 숫자의 계승을 계산하는 Python 함수를 작성해 보겠습니다. 파이썬에서 팩토리얼 프로그램을 작성할 수있는 방법은 두 가지가 있습니다. 하나는 반복 방법을 사용하는 것이고 다른 하나는 재귀 방법을 사용하는 것입니다.

Python에서 반복을 사용하여 숫자의 계승 계산

반복 방법을 사용하는 팩토리얼 프로그램은 프로그램에서 for루프 나 while루프와 같은 루프를 사용하는 것입니다. Python에서 factorial을위한 반복 프로그램을 작성하는 동안 세 가지 조건을 확인해야합니다.

  1. 주어진 숫자가 음수 : 숫자가 음수이면 음수의 계승이 존재하지 않기 때문에 계승을 찾을 수 없다고 간단히 말할 것입니다.
  2. 주어진 숫자가 0 : 숫자가 0이면 숫자 0의 계승이 1이기 때문에 단순히 1을 인쇄합니다.
  3. 주어진 숫자는 양수입니다. 숫자가 양수이면 계승을 찾습니다.
def factorial(num):
    if num < 0:
        print("Factorial of negative num does not exist")

    elif num == 0:
        return 1

    else:
        fact = 1
        while num > 1:
            fact *= num
            num -= 1
        return fact


num = 5

print("Factorial of", num, "is", factorial(num))

출력:

Factorial of 5 is 120

Python에서 재귀를 사용하여 숫자의 계승 계산

재귀는 같은 함수를 반복해서 호출하는 것입니다. 재귀를 사용하면 더 적은 수의 코드를 작성할 수 있으며, 반복 방법을 사용하여 작성할 코드보다 훨씬 더 읽기 쉽습니다.

재귀 함수를 호출 할 때마다 재귀 스택이 메모리에 생성됩니다. 이 재귀 스택에는 재귀 함수가 실행을 마친 후 다음에 실행될 명령어를 추적하는 프로그램 카운터라는 것이 있습니다.

def factorial(n):
    return 1 if (n == 1 or n == 0) else n * factorial(n - 1)


num = 5
print("Factorial of", num, "is", factorial(num))

출력:

Factorial of 5 is 120

Python에서math.factorial()함수를 사용하여 숫자의 계승 계산

계승 함수를 한 줄로 작성 하시겠습니까? 불가능 해 보입니까? 단 한 줄의 코드로 팩토리얼 함수를 작성하는 방법이 있습니다. math 모듈을 사용하여 수행 할 수 있습니다. math모듈 내부에는 숫자의 계승을 계산하는 factorial함수가 있습니다.

이 함수를 수학 모듈에서 가져 와서 프로그램 내에서 호출하고 계승을 계산하려는 숫자를 전달해야합니다. 아래 예를 참조하십시오.

from math import factorial

print("Factorial is", factorial(5))

출력:

Factorial is 120