[PYTHON] 파이썬에서 Factorial을위한 함수
PYTHON파이썬에서 Factorial을위한 함수
파이썬에서 정수의 계승을 계산하려면 어떻게해야합니까?
해결법
-
==============================
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.6 이상에서 다음을 시도해보십시오.
파이썬 2.6 이상에서 다음을 시도해보십시오.
import math math.factorial(n)
-
==============================
3.이것이 낡은 스레드이기 때문에 실제로는 필요하지 않습니다. 하지만 여기에서는 while 루프를 사용하여 정수의 계승을 계산하는 또 다른 방법을 사용했습니다.
이것이 낡은 스레드이기 때문에 실제로는 필요하지 않습니다. 하지만 여기에서는 while 루프를 사용하여 정수의 계승을 계산하는 또 다른 방법을 사용했습니다.
def factorial(n): num = 1 while n >= 1: num = num * n n = n - 1 return num
-
==============================
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.Python2.5 또는 이전 버전을 사용하는 경우
Python2.5 또는 이전 버전을 사용하는 경우
from operator import mul def factorial(n): return reduce(mul, range(1,n+1))
새로운 파이썬의 경우 여기에 다른 답변으로 주어진 수학 모듈에 계승이 있습니다.
-
==============================
6.
def factorial(n): if n < 2: return 1 return n * factorial(n - 1)
-
==============================
7.for-loop를 사용하여 계승을 계산하는 또 다른 방법 -
for-loop를 사용하여 계승을 계산하는 또 다른 방법 -
def factorial(n): base = 1 for i in range(n,0,-1): base = base * i print base
-
==============================
8.네 말 뜻은:
네 말 뜻은:
def fact (n) : f = 1 범위 (1, n +1)의 i에 대해 : f * = i f를 돌려 주라.
-
==============================
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.
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.
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.이 방법들 중 많은 부분이 매우 훌륭하지만, 최선의 방법은 항상 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.루프 및 재귀 (루프 형태)가 느립니다. 따라서 모범 사례는 고려하지 않았지만이를 시도해보십시오.
루프 및 재귀 (루프 형태)가 느립니다. 따라서 모범 사례는 고려하지 않았지만이를 시도해보십시오.
# 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:])
모두 좋은 재미 있습니다.
감사합니다.
from https://stackoverflow.com/questions/5136447/function-for-factorial-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 시간 + 시간 상당 (0) | 2018.10.07 |
---|---|
[PYTHON] 파이썬에서 스레드 내에서 호출 될 때 sys.exit ()가 종료되지 않는 이유는 무엇입니까? (0) | 2018.10.07 |
[PYTHON] 대 / 소문자를 구분하지 않음 (0) | 2018.10.07 |
[PYTHON] 클래스 객체에 대한 사용자 정의 문자열 표현을 만드는 방법은 무엇입니까? (0) | 2018.10.07 |
[PYTHON] TypeError 수정 방법 : 해시하기 전에 유니 코드 개체를 인코딩해야합니까? (0) | 2018.10.07 |