# 3. 数学中!代表阶乘符号 如5!=5*4*3*2*1
#
# 使用map reduce计算1到10 个数的阶乘和。
#
# 1!+2!+3!+...+10!
# 方法1:递归阶乘算法
def jiecheng(x):
if x == 1:
return x
else:
return x * jiecheng(x - 1)
def sum(x, y):
return x + y
result_jiecheng = list(map(jiecheng, range(1, 11)))
# lambda写法
# result_jiecheng = list(map(lambda x: 1 if x == 1 else x*(x-1),range(1,11)))
print(result_jiecheng)
result_sum = functools.reduce(sum, result_jiecheng)
print(result_sum)
# 方法2:函数嵌套
# 思路:将reduce设置一个参数,放到函数里 a = functools.reduce(lambda x, y: x * y, range(1, x+1))
def jiecheng2(p):
return functools.reduce(lambda x, y: x * y, range(1, p + 1))
b = map(jiecheng2, range(1, 11))
# 上面的式子也可以写成
# b = map( lambda x: functools.reduce(lambda x, y: x * y, range(1, x+1)),range(1,11))
print(list(b))
print(functools.reduce(lambda x, y: x + y, list(b)))
Python _函数式编程_高阶函数实例_map_reduce混用_计算1到10 个数的阶乘和
最新推荐文章于 2022-12-25 15:56:51 发布