智一面的面试题提供python的测试题
使用地址:http://www.gtalent.cn/exam/interview?token=906315a76b5c14231889351088713f76

题目:阶层求和
求1+2!+3!+...+n!的和,你由键盘输入

解法1 常规思维
程序分析

1、先求出每一项的值

2、最后进行求和

代码编写

n = int(input("请输入一个数:"))
s = 0
t = 1
for i in range(1,n+1):
    t *= i
    s += t
print ('1! + 2! + 3! + ... + %d! = %d' % (n,s))
运行结果

请输入一个数:5
1! + 2! + 3! + ... + 5! = 153
解法2 递归
程序分析

1、定义一个求阶层递归函数

2、调用该函数实现求和

代码编写

#递归函数阶层
def fac(x):
    if x == 1:
      return 1
    return x * fac(x-1)
 
#调用递归
n = int(input("请输入一个数:"))
s = 0
for i in range(1,n+1):
    s += fac(i)
print ('1! + 2! + 3! + ... + %d! = %d' % (n,s))
运行结果

请输入一个数:6
1! + 2! + 3! + ... + 6! = 873
 
解法3 列表
程序分析

1、将每一个阶层加入列表

2、通过列表求和公式的到和值

代码编写

n = int(input("请输入一个数:"))
s = 1
t = []
for i in range(1,n+1):
    s *= i
    t.append(s)
print ('1! + 2! + 3! + ... + %d! = %d' % (n,sum(t)))
运行结果

请输入一个数:9
1! + 2! + 3! + ... + 9! = 409113
还有更多其他的解法,欢迎一起交流学习
————————————————
我们的python技术交流群:941108876
智一面的面试题提供python的测试题
使用地址“http://www.gtalent.cn/exam/interview?token=8a33fabdc405d59c90ffca2496195543