问题描述:

有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2个人大2岁。问第2个人,说比第1个人大2岁。问最后1个人,他说是10岁。
请问第5个人多大?


我的思路:

这个程序是一个需要不断回调原函数的典型,后面也有一个类似问题,这次换个写法;

定义一个计算年龄的函数,因为第一个人的年龄为10,后面的人依次加2,因此根据for循环按照循环的次数i计算第i个人的年龄;


我的代码:

#coding=utf-8
def olds (man):
    old=10
    for i in range(1,man):
        old+=2
        i+=1
    print "第%d个人的年龄为%d" % (man,old)
olds(1)
olds(2)
olds(3)
olds(4)
olds(5)


结果:

第1个人的年龄为10

第2个人的年龄为12

第3个人的年龄为14

第4个人的年龄为16

第5个人的年龄为18


示例代码:

def age(idx):
    return 10 if idx == 1 else age(idx-1) + 2
print age(5)


这个程序也很好理解的,就是通过判断传入的参数5依次得到age(4)+2而age(4)=age(3)+2, age(3)=age(2)+2  , age(2)=age(1)+2  ,age(1)=10,结果就是age(1)+2+2+2+2



题目出处:http://www.cheemoedu.com/exercise/33