第一题:n个自然数的立方和
计算公式 13 + 23 + 33 + 43 + …….+ n3
实现要求:
输入 : n = 5
输出 : 225
对应的公式 : 13 + 23 + 33 + 43 + 53 = 225
第一种方法:普通for循环
s1 = 0
for a in range(1,6):
s1 += a ** 3
print(s1)
第二种方法:reduce与lambda结合
from functools import reduce
a = reduce(lambda x,y:x + y**3,range(1,6))
print(a)
第三种方法:递归
def num(n):
if n == 1:
return 1 ** 3
else:
return n**3 + num(n - 1)
# 第一步: 函数num传参n = 5 --> 5 ** 3 + num(4)
# 第二步操作num(4): 函数num传参n = 4 --> 5 ** 3 + 4 **3 + num(3)
# 第三部操作num(3): 函数num传参 n = 3 --> 5 **3 + 4 **3 + c **3 + num(2)
# ....
print(num(5))
第二题:求10!
第一种方法:普通的for循环
s = 1
for i in range(1, 11):
s *= i
print(s)
print(s)
#结果
3628800
第二种方法:reduce与lambda结合
from functools import reduce
a = reduce(lambda x,y:x *y ,range(1,11))
print(a)
第三种方法:递归
def num(n):
if n == 0:
return 1
else:
return n * num(n - 1)
print(num(10))
第三题:求1+2!+3!+...+10!的和
结果:4037913
第一种方法:for循环
s = 1
a = []
for i in range(1, 11):
s *= i
a.append(s)
print(sum(a))
第二种方法:递归
def fact(i):
if i == 1:
return 1
else:
return i*fact(i-1)
b = []
for i in range(1,11):
b.append(fact(i))
print(sum(b))
网友评论