古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(python语言)

# 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
# 斐波那契数列:0,1,1,2,3,5,8,13,21(后面一个数是前面两个数的和)
# 第1个月 2(1)
# 第2个月 2(2)
# 第3个月 2(3)+ 2(1)
# 第4个月 2(3)+ 2(2) + 2(1)
# 第5个月 2(3)+ 2(3) + 2(2) + 2(1) + 2(1)
# 第6个月 2(3)+ 2(3) + 2(3) + 2(2) + 2(2) + 2(1) + 2(1)+ 2(1)
# 第7个月 2(3)+ 2(3) + 2(3) + 2(3) + 2(3) + 2(2) + 2(2)+ 2(2)+ 2(1)+ 2(1)+ 2(1)+2(1)+ 2(1)

# 月份  1 2 3 4 5  6  7
# 兔子  2 2 4 6 10 16 26
# 除二后 1 1 2 3 5  8  13
while True:
    try:
        i = eval(input('请输入月份:'))
        if type(i) == int and i <= 24:
            if i == 1 or i == 2:
                print("有2只兔子")
                break
            else:
                f1 = 1
                f2 = 1
                for f in range(3, i+1):
                    f2, f1 =f1, f1 + f2
                print('%d' % (f1*2))
                break
        else:
            print('请输入大于0的正整数')
    except:
        print('您输入的是字符非法,请重新输入:')
        continue

 

posted @ 2018-05-05 22:50  沈强-1201  阅读(5185)  评论(0编辑  收藏  举报