Python中析因函数

我如何去计算Python中的一个整数的阶乘?

最简单的方法: 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一如既往,是你的朋友;)

在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 

现有的解决scheme

最短也许是最快的解决scheme是:

 from math import factorial print factorial(1000) 

build立你自己的

你也可以build立你自己的解决scheme。 一般来说,你有两种方法。 最适合我的是:

 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) 

如果你正在使用Python2.5或更旧版本,请尝试

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

对于较新的Python,在这里的其他答案中给出了math模块中的阶乘

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

另一种使用for-loop计算阶乘的方法 –

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

你意思是:

 def fact(n): f = 1 for i in range(1, n +1): f *= i return f 

很多这些方法是非常好的,但我会说你最好的select是使用内置函数。 但是如果你想看看发生了什么,那么你自己也可以创造出一些非常容易创造的东西。 我提出的一个很快就和其中许多人一样。

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

这是一个相当有效的代码,好处是如果你不想从列表中操纵一些数据,就会创build一个列表,尽pipe我不知道为什么你会这么做。


编辑:只是看到我张贴在一个旧的东西。 抱歉。

 #use this code print("welcome to factoral program") factor = int(input("enter the number you want factors for")) factors = [] while factor > 0: factors.append(factor) factor -= 1 print(factors)