취뽀 기록

#열심히 살자 #취업 #공부

Python/[알고리즘]

[python] 팩토리얼(factorial) 함수 구현(for 문/ 재귀/math 라이브러리)

hyunnn_00 2023. 6. 13. 10:47
■ 팩토리얼(factorial)

특정 수보다 작거나 같은 모든 양의 정수의 곱이다.

n이 하나의 자연수일 때, 1에서 n까지의 모든 자연수의 곱

ex) 4! = 4 x 3 x 2 x 1 = 24


 

1. for 반복문을 이용한 팩토리얼 구현


# for문 이용
n = int(input("팩토리얼을 구할 숫자를 입력하세요."))
result = 1 
for n in range(1, n+1, 1):
	result *= n   # result = result * n
print(result)

 

 

풀이

------------------------------------------------------------------------------------------------------

1. input 함수를 이용해 사용자에게서 숫자를 입력 받는다.

2. 결과를 출력할 result 변수에 1을 할당(1부터 시작)

3. 1에서 입력받은 수까지 반복을 수행하며 result 변수에 해당 값을 곱한다.

4. result의 최종 결과값을 출력

 

ex) 사용자의 입력이 3 이라면?

result = 1, n = 1, result x n = 1 * 1 = 1

result = 1, n = 2, result x n = 1 * 2 = 2

result = 2, n = 3, result x n = 2 * 3 = 6

최종 결과값 : 6

 

 


 

 

2. 재귀함수 사용하여 팩토리얼 구현


#재귀함수 사용
def factorial(n):
    if(n > 1):
        return n * factorial(n - 1)
    else:
        return 1

n = int(input("팩토리얼을 구할 숫자를 입력하세요 : "))
print(factorial(n))

 

 

풀이

----------------------------------------------------------------------------------------------------------------------

1. def 함수를 통해 factorial(n) 이라는 함수 정의 -> factorial은 재귀 함수

2. 해당 함수에 입력 받은 파라미터 값이 1보다 크면 입력 받은 수 n * factorial(n-1)을 리턴

 

ex) factorial(4) 호출

4 > 1 => factorial(3) 호출

3 > 1 => factorial(2) 호출

2 > 1 => factorial(1) 호출

1 > 1 => 거짓이므로 1을 리턴

 

factorial(1) = 1

2 > 1 이므로 factorial(2) = 2 * factorial(1) = 2 * 1 = 2  

3 > 1 이므로 factorial(3) = 3 * factorial(2) = 3 * 2 = 6  
2 > 1 이므로 factorial(2) = 2 * factorial(1) = 2 * 6 = 24  

최종 결과값 : 24 

 

 


3. math 라이브러리에서 제공하는 factorial  함수 이용

#math라이브러리 사용
import math
n = int(input("팩토리얼을 구할 숫자를 입력하세요 : "))
print(math.factorial(n))