본문 바로가기
Study/Python study

[Python(파이썬)] 팩토리얼(factorial) 구현

by 파크영 2021. 7. 21.

팩토리얼(계승; Factorial)

1부터 구하고자하는 양의 정수 N까지의 정수를 모두 곱한 것 

 

n팩토리얼

 

팩토리얼 예시

3!
= 3 * 2 * 1 = 6

5! = 5 * 4 * 3 * 2 * 1 = 120

 

 

 

 파이썬 팩토리얼 구하는 3가지 방법 

1. 재귀

2. for문

3. math.factorial 함수

 

 

1. 재귀함수를 통해서 팩토리얼 구현 방법

 

n! = n * (n-1) * (n-2) * … * 1 이러한 식으로 팩토리얼은 구성되어있기 때문에 n에서 하나씩 값을 뺀 후 다시 함수를 호출해서 곱하게 하면 된다. 

 

# 팩토리얼 재귀함수
def factorial_recursion(n):
    if n > 1:
        return n * factorial_recursion(n-1)
    else:
        return 1

 

# 출력값
>>> factorial_recursion(1)
1
>>> factorial_recursion(2)
2
>>> factorial_recursion(3)
6
>>> factorial_recursion(4)
24
>>> factorial_recursion(5)
120

 

 

2. for문을 이용하여 팩토리얼 구현 방법

 

for문을 1부터 n까지 돌면서 sum에 i (1~n)값을 곱해주면 된다. 

 

# for문 팩토리얼
def factorial_for(n):
    sum = 1
    for i in range(1, n+1):
        sum *= i
    return sum

 

# 출력값
>>> factorial_for(1)
1
>>> factorial_for(2)
2
>>> factorial_for(3)
6
>>> factorial_for(4)
24
>>> factorial_for(5)
120

 

 

3. math.factorial 함수을 이용하여 팩토리얼 사용하는 방법 

 

파이썬에서는 math 라이브러리에 factorial함수가 이미 구현되어있다. 

 

math.factorial()

>>> import math
>>> math.factorial(1)
1
>>> math.factorial(2)
2
>>> math.factorial(3)
6
>>> math.factorial(4)
24
>>> math.factorial(5)
120

 

※ 0보다 큰 양수만 맞는 결과값을 반환 (Python 3.9이상은 (숫자.0)도 안됨)

0 -> 1반환

음수 -> ERROR

# 0인 경우
>>> math.factorial(0)
1

# 음수인 경우
>>> math.factorial(-5)
Traceback (most recent call last):
  File "<pyshell#27>", line 1, in <module>
    math.factorial(-5)
ValueError: factorial() not defined for negative values

댓글