【发布时间】:2014-11-26 22:46:40
【问题描述】:
您好,我正在尝试编写一个函数来查找任何给定数字的阶乘。例如,对于阶乘 (6),我会得到 6*5*3*2*1 的乘积。
所以对于阶乘(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,但我无法弄清楚。如何编辑现有代码以使其正常运行?
【问题讨论】:
-
一定要用递归吗?
-
没有。其实我只需要使用range、multi和reduce。
-
所以你必须使用自己的函数multi?
-
好吧,只需将 mgilsons 中的
operator.mult替换为您的 mult 答案,使用xrange(1,n)即可获得答案 -
什么是 xrange。它对我不起作用。
标签: python map reduce factorial