python - 在 Python 中使用 Reduce 函数查找阶乘

标签 python dictionary reduce factorial

您好,我正在尝试编写一个函数来查找任何给定数字的阶乘积。例如,对于阶乘 (6),我会得到 6*5*3*2*1 的乘积。

所以对于 factorial(3),输出将为 6。

我目前拥有的功能是:

import functools 

def mult(x, y):
    return x * y


def factorial(n):
    if n == 0:
        return 1
    else:
        functools.reduce(mult(n,factorial(n - 1)))

但我不断收到错误消息,提示 Python 需要 2 个参数,但给出了 1 个。我知道我必须以某种方式使用 range 但我无法弄清楚。如何编辑现有代码以使其正常运行?

最佳答案

你可以很容易地做到这一点:

>>> import functools, operator
>>> functools.reduce(operator.mul, xrange(1, 6))
120

请注意,第一个参数是一个函数(您传递的是函数调用的结果)。第二个参数是一个可迭代。还要注意这样写,不需要递归...

operator.mul 等同于您的mult 函数

关于python - 在 Python 中使用 Reduce 函数查找阶乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26152469/

相关文章:

python - 查找python脚本所需的模块

python - 没有 QtGui 和 QtWidgets 的 PyQt5

python - 如何在已经包含文本的行上将字典写入 CSV 文件?

arrays - 在没有 for 循环的情况下快速从字典转换为数组

python - 如何在 Linux 中使用 PyInstaller 编译 python

list - 如何将列表转换为带有标题和相应值的 CSV 文本文件?

python - 查找元组列表中具有相同第一项和第三项的元组的计数

javascript - promise 在返回前不解决

cuda - Thrust:如何直接控制算法调用的执行位置?

python - 像 plt.tight_layout() 这样的函数改变图形大小而不是轴大小