Python에서 팩토리얼 계산

Sahil Bhosale 2023년1월30일
  1. Python에서 반복을 사용하여 숫자의 계승 계산
  2. Python에서 재귀를 사용하여 숫자의 계승 계산
  3. Python에서math.factorial()함수를 사용하여 숫자의 계승 계산
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
Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

관련 문장 - Python Math