编写程序计算,有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子(小兔子一出生则为第一个月),假如兔子都不死,问第N个月总共有多少对兔子?
#!/usr/bin/python3
"""
rone:月龄为1的兔子对数
rtwo:月龄为2的兔子对数
rabove:月龄大于2的兔子对数
rnow:本月兔子对数
rnew:下个月新增的兔子对数
"""
def rabbit(n):
rtwo=rnow=rnew=1 #第2个月结束时的兔子对数
rone=rabove=0 #第2个月结束时的兔子对数
i=2 #i表示第i个月
if n<2:
print(1)
else:
while i<n:
i+=1 #计算第i+1个月兔子对数
rabove+=rtwo #月龄>2的:累加
rtwo=rone #月龄=2的:等于上个月月龄等于1的
rone=rnew #月龄=1的:等于上个月新增的
rnow=rone+rtwo+rabove #第i+1个月兔子对数=月龄>2 +月龄=2+月龄=1
rnew=rabove+rtwo #下个月新增的:等于本月月龄>2和月龄等于2的
print(rnow)
rabbit(1)
rabbit(2)
rabbit(3)
rabbit(4)
rabbit(5)
rabbit(6)
运行结果:
1
1
2
3
5
8
。。。这结果,似乎就是斐波那契数列... ...