您好,我正在尝试编写一个函数来查找任何给定数字的阶乘积。例如,对于阶乘 (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/