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

先利用递归方法求一下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)

你可能感兴趣的:(python)