복붙노트

[PYTHON] 파이썬에서 Factorial을위한 함수

PYTHON

파이썬에서 Factorial을위한 함수

파이썬에서 정수의 계승을 계산하려면 어떻게해야합니까?

해결법

  1. ==============================

    1.가장 쉬운 방법 : math.factorial (x) (2.6 이상에서 사용 가능).

    가장 쉬운 방법 : math.factorial (x) (2.6 이상에서 사용 가능).

    원한다면 / 스스로 쓰려면, 다음과 같은 것을 사용하십시오.

    def factorial(n):return reduce(lambda x,y:x*y,[1]+range(1,n+1))
    

    또는 더 읽기 쉬운 것 :

    def factorial(n):
        if n == 0:
            return 1
        else:
            return n * factorial(n-1)
    

    언제나 그렇듯이 Google은 친구입니다.)

  2. ==============================

    2.파이썬 2.6 이상에서 다음을 시도해보십시오.

    파이썬 2.6 이상에서 다음을 시도해보십시오.

    import math
    math.factorial(n)
    
  3. ==============================

    3.이것이 낡은 스레드이기 때문에 실제로는 필요하지 않습니다. 하지만 여기에서는 while 루프를 사용하여 정수의 계승을 계산하는 또 다른 방법을 사용했습니다.

    이것이 낡은 스레드이기 때문에 실제로는 필요하지 않습니다. 하지만 여기에서는 while 루프를 사용하여 정수의 계승을 계산하는 또 다른 방법을 사용했습니다.

    def factorial(n):
        num = 1
        while n >= 1:
            num = num * n
            n = n - 1
        return num
    
  4. ==============================

    4.가장 짧고 아마도 가장 빠른 해결책은 다음과 같습니다.

    가장 짧고 아마도 가장 빠른 해결책은 다음과 같습니다.

    from math import factorial
    print factorial(1000)
    

    나만의 솔루션을 구축 할 수도 있습니다. 일반적으로 두 가지 접근법이 있습니다. 가장 잘 맞는 것은 다음과 같습니다.

    from itertools import imap
    def factorial(x):
        return reduce(long.__mul__, imap(long, xrange(1, x + 1)))
    
    print factorial(1000)
    

    (결과가 길어질수록 더 큰 숫자에도 적용됩니다)

    같은 목표를 달성하는 두 번째 방법은 다음과 같습니다.

    def factorial(x):
        result = 1
        for i in xrange(2, x + 1):
            result *= i
        return result
    
    print factorial(1000)
    
  5. ==============================

    5.Python2.5 또는 이전 버전을 사용하는 경우

    Python2.5 또는 이전 버전을 사용하는 경우

    from operator import mul
    def factorial(n):
        return reduce(mul, range(1,n+1))
    

    새로운 파이썬의 경우 여기에 다른 답변으로 주어진 수학 모듈에 계승이 있습니다.

  6. ==============================

    6.

    def factorial(n):
        if n < 2:
            return 1
        return n * factorial(n - 1)
    
  7. ==============================

    7.for-loop를 사용하여 계승을 계산하는 또 다른 방법 -

    for-loop를 사용하여 계승을 계산하는 또 다른 방법 -

    def factorial(n):
        base = 1
        for i in range(n,0,-1):
            base = base * i
        print base
    
  8. ==============================

    8.네 말 뜻은:

    네 말 뜻은:

    def fact (n) :   f = 1   범위 (1, n +1)의 i에 대해 :    f * = i   f를 돌려 주라.

  9. ==============================

    9.http://www.google.com/search?aq=0&oq=factorial+py&sourceid=chrome&ie=UTF-8&q=factorial+python

    http://www.google.com/search?aq=0&oq=factorial+py&sourceid=chrome&ie=UTF-8&q=factorial+python

    import math
    math.factorial( yourInt )
    
  10. ==============================

    10.

    def factorial(n):
        result = 1
        i = n * (n -1)
        while n >= 1:
            result = result * n
            n = n - 1
        return result
    
    print (factorial(10)) #prints 3628800
    
  11. ==============================

    11.

    def fact(n, total=1):
        while True:
            if n == 1:
                return total
            n, total = n - 1, total * n
    
    cProfile.run('fact(126000)')
    
    4 function calls in 5.164 seconds
    

    스택 사용은 재귀 호출과 같이 편리하지만 비용이 많이 들지만 자세한 정보를 저장하면 많은 메모리를 차지할 수 있습니다.

    스택이 높으면 컴퓨터가 함수 호출에 대한 많은 정보를 저장한다는 의미입니다.

    이 메서드는 상수 메모리 (반복과 같은) 만 사용합니다.

    def fact(n):
        result = 1
        for i in range(2, n + 1):
            result *= i
        return result
    
    cProfile.run('fact(126000)')
    
    4 function calls in 4.708 seconds
    
    def fact(n):
        return math.factorial(n)
    
    cProfile.run('fact(126000)')
    
    5 function calls in 0.272 seconds
    
  12. ==============================

    12.이 방법들 중 많은 부분이 매우 훌륭하지만, 최선의 방법은 항상 built in 함수를 사용하는 것이라고 말하고 싶습니다. 그러나 당신이 무슨 일이 일어나고 있는지보고 싶다면 스스로 아주 ​​쉽게 만들 수있는 것들이 있습니다. 내가 생각해 낸 빠른 것은 여기에있는 많은 사람들과 거의 같습니다.

    이 방법들 중 많은 부분이 매우 훌륭하지만, 최선의 방법은 항상 built in 함수를 사용하는 것이라고 말하고 싶습니다. 그러나 당신이 무슨 일이 일어나고 있는지보고 싶다면 스스로 아주 ​​쉽게 만들 수있는 것들이 있습니다. 내가 생각해 낸 빠른 것은 여기에있는 많은 사람들과 거의 같습니다.

    def factorial(n):
        x = 1
        li = list(range(1, n + 1))
        for each in li:
            x = x * each
        print(x)
    

    이것은 매우 효율적인 코드입니다. 비록 왜 당신이 정말로 그럴 것인지는 모르지만 목록의 일부 데이터를 조작하지 않으면리스트가 생성된다는 이점이 있습니다.

    편집 : 단지 내가 늙은 것에 게시 한 것을 보았다. 죄송합니다.

  13. ==============================

    13.루프 및 재귀 (루프 형태)가 느립니다. 따라서 모범 사례는 고려하지 않았지만이를 시도해보십시오.

    루프 및 재귀 (루프 형태)가 느립니다. 따라서 모범 사례는 고려하지 않았지만이를 시도해보십시오.

    # Factorials are really just a range of numbers 
    # multiplied by each other. 
    # 
    # So this one liners:
    # 1) onverts a range (1,2,3...) to a string, 
    # 2) removes the leading & closing brackets, and 
    # 3) then multiplies the results together using eval.
    
    factorial = eval(str(range(1,n+1)).replace(', ','*')[1:-1:])
    

    모두 좋은 재미 있습니다.

    감사합니다.

  14. from https://stackoverflow.com/questions/5136447/function-for-factorial-in-python by cc-by-sa and MIT license