面试题:求1!+2!+......+10!
方法递归求n!,求阶乘的和时,可以使用for循环(但是在牛客上使用for循环,提示堆栈溢出),方法二,使用列表的形式保存每个数据的阶乘,然后再求和
代码中会将两个方法全部写出,以供参考,由于能力有限,堆栈溢出问题,还没有仔细研究。
def recursion(n):
if n==1:
return 1
else:
return n*recursion(n-1)
方法一:注意range的 范围:从1开始
sum=0
for i in range(1,11):
sum = sum + recursion(i)
print(sum)
return sum
方法二:使用列表将每次的阶乘值进行保存
list=[]
for i in range(1,11):
list.append(recursion(i))
sum = sum(list)
return sum
优化的方向:
3!=3*2*1
4!=4*3!---------优化的点,可以把每个阶乘的数存到栈中,以后再次计算的时候,可以拿出来直接用
实现阶乘的另外一种形式
def recursion(n):
k=1
for i in range(1,len(n)-1):
k = k*i
print(k)