python - 在 python 中找到阶乘的最佳方法?

标签 python factorial

我正在研究阶乘的速度。但我只使用两种方式,

import timeit

def fact(N):
    B = N
    while N > 1:
        B = B * (N-1)
        N = N-1
    return B

def fact1(N):
    B = 1
    for i in range(1, N+1):
        B = B * i
    return B


print timeit.timeit('fact(5)', setup="from __main__ import fact"), fact(5)
print timeit.timeit('fact1(5)', setup="from __main__ import fact1"), fact1(5)

这是输出,

0.540276050568 120
0.654400110245 120

从我观察到的上面的代码,

  1. 虽然花费的时间比

我的问题是,

是在 python 中查找阶乘的最佳方法吗?

最佳答案

如果您正在寻找最好的,为什么不使用数学模块中提供的那个呢?

>>> import math
>>> math.factorial
<built-in function factorial>
>>> math.factorial(10)
3628800

以及我机器上的时间比较:

>>> print timeit.timeit('fact(5)', setup="from __main__ import fact"), fact(5)
0.840167045593 120
>>> print timeit.timeit('fact1(5)', setup="from __main__ import fact1"), fact1(5)
1.04350399971 120
>>> print timeit.timeit('factorial(5)', setup="from math import factorial")
0.149857997894

我们看到内置函数明显优于您提出的任何一个纯 Python 变体。

关于python - 在 python 中找到阶乘的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20604185/

相关文章:

python - 将元组集合压缩到集合中 - python

python split问题我需要数据输出看起来不同

Python3 使用 Lambda 和 Sort 对元组列表进行排序

java - 递归打印阶乘

java - 将大数转换为字符串格式以进行比较

Haskell基本阶乘不退出?

python - 传递工作表名称的workbook.add_chartsheet([sheetname])无法正常工作

python - 如何通过vim进行交互?

c++ - 以幂形式打印整数的素因数 ( ^ )

用于阶乘错误输出的 Java 程序