问题描述:“假定一对大兔子每月能生一对小兔子,且每对新生的小兔子经过一个月可以长成一对大兔子,具备繁殖能力,如果不发生死亡,且每次均生下一雌一雄,问一年后共有多少对兔子?”
在这里我们注意观察发现,从第三月份起,每个月的兔子数量是它前两个月兔子数量之和。
也就是 :第(i)月的兔子数 = 第 (i -1 ) 月兔子数 + 第 (i - 2)月兔子数。由此我们编写python代码如下。
def digui(mouths):
"""
这是一个递归问题
:param mouths:需要求解的月份兔子数
:return: 返回指定月份的兔子数
"""
ans = 1
alist = []
# 这里是循环终止条件
if mouths == 1 or mouths ==2:
return ans
else:
mouths = mouths - 1
return digui(mouths) + digui(mouths - 1)
if __name__ == '__main__':
number = []
for i in range(1,15):
number.append(digui(i))
print(number[i-1],end=' ')
输出结果如下
1 1 2 3 5 8 13 21 34 55 89 144 233 377
Process finished with exit code 0
这里实现了前面14个月的输出
谢谢阅读