파이썬에서 정수의 계승을 계산하는 방법은 무엇입니까?
답변
가장 쉬운 방법은 사용하는 것입니다 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
