算法四--阶乘的和

面试题:求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)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值