팩토리얼(계승; Factorial)
1부터 구하고자하는 양의 정수 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
'Study > Python study' 카테고리의 다른 글
[Python(파이썬)] range, enumerate 함수 (0) | 2021.08.20 |
---|---|
[Python(파이썬)] 리스트 초기화 (0) | 2021.08.05 |
[Python(파이썬)] 세트(set) (0) | 2021.07.15 |
[Python(파이썬)] filter(), enumerate() - 찾고자하는 item의 index 모두 찾기 (0) | 2021.07.12 |
[Python(파이썬)] 문자, 아스키코드 변환 (0) | 2021.07.12 |
댓글