Python에서 팩토리얼 계산
숫자의 계수는 해당 숫자보다 작거나 같은 모든 양의 정수의 곱입니다. 예를 들어, 5의 계승은 5보다 작거나 같은 모든 숫자의 곱입니다. 즉 ‘5 * 4 * 3 * 2 * 1’은 120과 같습니다. 따라서 숫자 5의 계승은 120입니다.
이제 숫자의 계승을 계산하는 Python 함수를 작성해 보겠습니다. 파이썬에서 팩토리얼 프로그램을 작성할 수있는 방법은 두 가지가 있습니다. 하나는 반복 방법을 사용하는 것이고 다른 하나는 재귀 방법을 사용하는 것입니다.
Python에서 반복을 사용하여 숫자의 계승 계산
반복 방법을 사용하는 팩토리얼 프로그램은 프로그램에서 for
루프 나 while
루프와 같은 루프를 사용하는 것입니다. Python에서 factorial을위한 반복 프로그램을 작성하는 동안 세 가지 조건을 확인해야합니다.
- 주어진 숫자가 음수 : 숫자가 음수이면 음수의 계승이 존재하지 않기 때문에 계승을 찾을 수 없다고 간단히 말할 것입니다.
- 주어진 숫자가 0 : 숫자가 0이면 숫자 0의 계승이
1
이기 때문에 단순히1
을 인쇄합니다. - 주어진 숫자는 양수입니다. 숫자가 양수이면 계승을 찾습니다.
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
모듈 내부에는 숫자의 계승을 계산하는 ‘계승’함수가 있습니다.
이 함수를 수학 모듈에서 가져 와서 프로그램 내에서 호출하고 계승을 계산하려는 숫자를 전달해야합니다. 아래 예를 참조하십시오.
from math import factorial
print ("Factorial is", factorial(5))
출력:
Factorial is 120