python2 递归与迭代的效率问题

最近发现了一个叫51nod的编程网站,正好也学习了python2 于是就用Python2语言练练手,顺便也复习一下算法问题。

在期间做了一个1002数塔问题,引出了我对递归和迭代的效率问题,题目是这样的

 

 

 

 

看了题目后 我用了递归算法,自上而下进行递归,自下而上进行计算,我的代码和结果如下:

算法是正确的,但当数据量大时,会发生tle,当时我认为是不是我的算法有问题,是不是还有更好的计算方式,所以我查了一下这道题的解法,发现这道题的解法(动态规划)是用循环的方式从下至上求出每一层的最大值,到顶层时为最大值。这和我的想法似乎是一样的。只不过一个是迭代一个是递归。所以我认为应该是效率问题

所以百度了一下就豁然开朗了,递归理论上时间效率是和迭代一样的,但是在实际过程中递归需要不断调用函数,增加栈空间,这就导致在这期间内存的消耗会比循环要大,时间效率就会比迭代要多,毕竟迭代只是一个累加的过程而已,所以我改变了一下我的方式,这道题就ac了

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值