python; 팩토리얼 N! 구하기 및 실행속도 비교 (반복문,재귀,math)

    1) 반복문 for

    def factorial(n):
        result = 1
        for i in range(1, n+1):
            result *= i
        return result

    2) 재귀함수

    def factorial(n):
        if n > 1:
            return n * factorial(n-1)
        else:
            return 1​

     

    *RescurisonError: 재귀와 관련된 에러로 파이썬이 정한 최대 재귀 깊이보다 그 깊이가 더 깊어질 때 방생하는 에러. 대체로 최대 재귀 깊이는 1,000으로 기본 설정 되어있다.

     

    #해결방법

    import sys
    sys.setrecursionlimit(10**5)

    3) math 라이브러리 사용

    import math
    math.factorial(n) # n!
    # print(math.factorial(n))​

     

     

    +) 코드 실행 시간 측정 후 비교

     · 10000! 기준

         1. 반복문 : 0.03482 sec

         2. 재귀 : 0.04213 sec

         3. math : 0.01921sec

    댓글