在Python中使用Reduce函数来计算阶乘

5

您好,我正在尝试编写一个函数来计算任意给定数字的阶乘积。例如,对于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,但我无法弄清楚。如何编辑我的现有代码以使其正常运行?


你必须使用递归吗? - Padraic Cunningham
不需要。实际上,我只需要使用range、multi和reduce。 - Whooperton Goldberg
什么是xrange? 它对我不起作用。 - Whooperton Goldberg
使用Python 3吗?如果是,只需使用range - Padraic Cunningham
没关系,我已经解决了。 - Whooperton Goldberg
显示剩余2条评论
11个回答

-2
-----Import the reduce() function
from functools import reduce

---Read the input as an integer
n = int(input())

fact=reduce(lambda x,y:x+y,range(n+1))
print(fact)

1
感谢您提供这段代码片段,它可能会提供一些有限的、即时的帮助。一个适当的解释将极大地提高其长期价值,因为它展示了为什么这是一个好的问题解决方案,并使其对未来读者的其他类似问题更有用。请[编辑]您的答案,添加一些解释,包括您所做的假设。 - Dwhitz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接