코딩테스트
백준 27433: 파이썬으로 팩토리얼 풀기. 재귀함수 복습.
eastjin
2023. 8. 14. 15:14
반응형
팩토리얼 문제. 재귀로 풀 수도 있고 아닐 수도 있다.
우선 재귀로 안하고 풀 때 :
import sys
def factorial(n: int) -> int:
fact_num = 1
for i in range(1, n+1):
fact_num = fact_num * i
return fact_num
a = int(sys.stdin.readline())
factorial(a)
print(factorial(a))
이렇게 for문을 돌려보면 된다.
그리고 재귀함수를 써보면?
import sys
def factorial(n: int) -> int:
if n <= 1:
return 1
else:
return n * factorial(n-1)
a = int(sys.stdin.readline())
factorial(a)
print(factorial(a))
n * n-1의 반복. 1이 나올 때 까지 반복한다.
그러면 이 경우에는 시간은 얼마나 차이날까?
재귀를 안쓸 때 코드 : 3.3855438232421875e-05
재귀를 썼을 때 코드 : 5.412101745605469e-05
안쓸 때가 더 짧긴 하네.
이 경우에는 재귀의 시간이 목적이 아니라 재귀 사용법이 목적이니까. 애초에 for문과 if를 비교한다는 것도 조금 이상하기도 하고.
아무튼 끝
728x90