python-求1+2!+3!+...+20!的和

本文探讨了多种方法来计算从1到20的阶乘之和,包括迭代、递归、高阶函数如map和reduce的使用。通过Python代码实现,展示了不同方法的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先利用递归方法求一下5!
def fact(i):
    sum = 0
    if i == 0:
        sum = 1
    else:
        sum = i*fact(i-1)
    return sum

print(fact(5))
求1+2!+3!+…+20!的和
#法一:
n = 0
s = 0
t = 1
for n in range(1,21):
    t *= n
    s += t
print(s)

函数map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,
并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回

s = 0
l = range(1,21)
def mul(x):
    r = 1
    for i in range(1,x+1):
        r *= i
    return r
s=sum(map(mul,l))
print(s)
#法三,递归
s = 0
def mul(n):
   if n==1:
      return 1
   return n*mul(n-1)

for n in  range(1,21):
   a = mul(n)
   s += a
print(s)
#法四,列表
#!/usr/bin/python

s = 1
t = []
for i in range(1,21):
    s *= i
    t.append(s)
print(sum(t))

法五,使用lambda匿名函数
reduce() 函数会对参数序列中元素进行累积,函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:

  1. 用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,
  2. 得到的结果再与第三个数据用 function 函数运算,最后得到一个结果
from functools import reduce
a = 0
for n in range(1, 21):
    a += reduce(lambda x, y: x * y, range(1, n + 1))
print(a)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值