백준 27433: 파이썬으로 팩토리얼 풀기. 재귀함수 복습.

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