编写函数,接收任意一自然数 n(n<30),1!+2!+3!+……+n!的结果。(提示使用 reduce() 函数)
时间: 2024-10-12 12:12:58 浏览: 31
编写函数来计算从1到n的所有正整数阶乘之和,可以利用Python内置的`reduce`函数,这个函数可以从一个序列中累积计算结果。首先,你需要导入`functools`模块,它包含了`reduce`函数。然后,你可以定义一个辅助函数`factorial`来计算阶乘,接着用`reduce`函数结合这两个部分。下面是一个例子:
```python
from functools import reduce
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)
def sum_of_factorials(n):
# 使用reduce计算1! + 2! + ... + n!
result = reduce(lambda x, y: x + factorial(y), range(1, n + 1), 0)
return result
# 示例
n = int(input("请输入一个小于30的自然数: "))
print(f"1! + 2! + ... + {n}! 的和为: ", sum_of_factorials(n))
```
在这个函数中,`range(1, n + 1)`生成一个从1到n的数字序列,`lambda x, y: x + factorial(y)`是一个累加器函数,用于将前一个阶乘与当前阶乘相加。初始值`0`表示第一个阶乘的累积结果。
阅读全文