阶乘练习题

2022-11-15  本文已影响0人  测试探索

第一题: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))
上一篇 下一篇

猜你喜欢

热点阅读