파이썬에서 정수의 계승을 계산하는 방법은 무엇입니까?
답변
가장 쉬운 방법은 사용하는 것입니다 math.factorial
(Python 2.6 이상에서 사용 가능).
import math
math.factorial(1000)
직접 작성하고 싶은 경우 반복적 인 접근 방식을 사용할 수 있습니다.
def factorial(n):
fact = 1
for num in range(2, n + 1):
fact *= num
return fact
또는 재귀 접근법 :
def factorial(n):
if n < 2:
return 1
else:
return n * factorial(n-1)
있습니다 계승 기능이 당신이 또한 확인해야합니다, 그래서 오직 양의 정수에 대해 정의 n >= 0
하고 그 isinstance(n, int)
. 그렇지 않은 경우 a ValueError
또는 a를 TypeError
각각 올리십시오 . math.factorial
당신을 위해 이것을 돌볼 것입니다.
답변
Python 2.6 이상에서는 다음을 시도하십시오.
import math
math.factorial(n)
답변
이것은 오래된 스레드이기 때문에 실제로는 필요하지 않습니다. 그러나 여기에 while 루프를 사용하여 정수의 계승을 계산하는 또 다른 방법이 있습니다.
def factorial(n):
num = 1
while n >= 1:
num = num * n
n = n - 1
return num
답변
기존 솔루션
가장 짧고 아마도 가장 빠른 해결책은 다음과 같습니다.
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)
(결과가 될 때 더 큰 숫자에도 작동합니다 long
)
이를 달성하는 두 번째 방법은 다음과 같습니다.
def factorial(x):
result = 1
for i in xrange(2, x + 1):
result *= i
return result
print factorial(1000)
답변
def factorial(n):
if n < 2:
return 1
return n * factorial(n - 1)
답변
Python2.5 또는 이전 버전을 사용하는 경우
from operator import mul
def factorial(n):
return reduce(mul, range(1,n+1))
최신 Python의 경우 수학 모듈에 계승이 있으며 여기에 다른 답변이 나와 있습니다.
답변
def fact(n):
f = 1
for i in range(1, n + 1):
f *= i
return f