【发布时间】:2013-05-01 20:32:03
【问题描述】:
这是我处理阶乘的方法:
def factorial(n):
'''Returns factorial of n'''
r = 1
for i in range(1, n + 1):
r *= i
return r
我认为这很简单,但我想你可以做一些更高效的事情,因为像 100000 这样的大数字需要很长时间。我的问题是,有吗? math.factorial() 也不好,它花费的时间大致相同。
【问题讨论】:
-
使用 xrange 代替 range 至少可以节省一些内存,如果不是时间的话。 xrange 是一个生成器,不需要提前分配整个列表。
-
谢谢,但我使用的是 Python 3,并且 range() 现在是一个生成器。
-
你也想过使用内置的
math.factorial吗?它比你上面的代码快一点。
标签: python algorithm factorial