python实现“兔子生兔子问题”的三种方法及猴子吃桃问题

问题:有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?(斐波那切数列)

1,用递归函数

def sum_month(mon):
    if mon<3:
        if mon>0:
            return 1
        return 0
    return sum_month(mon-1)+sum_month(mon-2)
while True:
    try:
        month=int(raw_input("input a number:"))
        sum1=sum_month(month)
        print(sum1)
    except:
        break

2,用数组

def sum_month(mon):
    if mon<3 and mon >0:
        return 1
    if mon==0:
        return 0
    else:
        a = [0] * (mon + 1)
        a[1] = 1
        a[2] = 1
        for i in range(3, mon + 1):
            a[i-1],
            a[i-2],
            a[i] = a[i - 1] + a[i - 2]
        return a[mon]
while True:
    try:
        month = int(raw_input("input a month:"))
        sum1 = sum_month(month)
        print(sum1)
    except:
        break

3,

while True:
    try:
        month=int(raw_input())
        if month <3:
            print 1
        else:
            a=1
            b=1
            for i in range(3,month+1):
                a,b=b,a+b
                # 这种赋值运算,先计算=号的右边b的值,a+b的值,算好了,然后再分别赋值给a 和b
            print b
    except:
        break

猴子吃桃问题:猴子第一天摘下若干桃子,当即吃了一半。还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。此后的每一次都吃前一天所剩桃子的一半,再多吃一个。第十天早上发现,只剩一个桃子。

while True :
    try:
        def get(day):
            if day == 10:
                return 1
            else:
                return (get(day + 1)+1)*2
        day1 = int(input("input a day:"))
        num=get(day1)
        print ("The number of remaining peaches on this day:%d"%num)
    except:
        break

你可能感兴趣的:(python实现“兔子生兔子问题”的三种方法及猴子吃桃问题)