经典算法的Python实现(3)

写在前面的话:

学习米铺高级架构师的博文中算法的内容,试着将里面的例子用Python加以实现,尚属练习,不足之处请指正。

文章参考地址:经典算法专题

第三题 猴子吃桃

问题描述

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个。第二天早上又将剩下的桃子吃了一半,还是不过瘾又多吃了一个。以后每天都吃前一天剩下的一半再加一个。到第10天刚好剩一个。问猴子第一天摘了多少个桃子?

分析: 这是一套非常经典的算法题,这个题目体现了算法思想中的递推思想,递归有两种形式,顺推和逆推,针对递推,只要 我们找到递推公式,问题就迎刃而解了。

           令S10=1,容易看出 S9=2(S10+1), 简化一下 

             S9=2S10+2

             S8=2S9+2

                 .....

             Sn=2Sn+1+2

代码实现

#!/usr/bin/python
# -*- coding:utf-8 -*-

s = 1

for i in range(1, 11):
    print u"现在是第 %d 天,桃子的数目是:%d " % (11 - i, s)
    s = (s + 1) * 2

结果

经典算法的Python实现(3)_第1张图片

你可能感兴趣的:(python)