兔子繁殖问题
古典问题:有一-对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个服生一对兔子,假如兔子都不死,用户输入-一个月份数,计算并在- - -行内输出该月的兔子总对数以及前-一个月与该月兔子数量的比值,比值结果保留小数点后3位,数字间用空格分隔。
由上图可以看出,兔子连续两个月会进行一次更替
1月兔代表刚新的兔子,2月代表下个月可以生崽的兔子
我们可以发现,一个月的兔子总数总是可以由它的前两个月的兔子总数确定
一个月的兔子总数=当月出生的兔子总数+下个月可以生崽的2月兔
而
下个月可以生崽的2月兔=上个月的兔子总数
而
当月出生的兔子总数=其实就是上上个月的兔子总数
那么我们就可以根据这个规律进行代码实现
返回当月的兔子总数
# 兔子繁殖问题
def RabbitBreeding(month:int):
if month==1:
return 2
if month==2:
return 2
else:
return RabbitBreeding(month-1)+RabbitBreeding(month-2)
为了完成题目的要求,还需要创建另一个函数
def ratio(month:int):
'''
返回该月兔子总数与前一个月的比值
:param month: 当前月份
:return:当月兔子总数 比值
'''
current=RabbitBreeding(month)
ratio_=current/RabbitBreeding(month-1)
ratio_str='{:.3f}'.format(ratio_)
return f'{current} {ratio_str}'
到此,完美结束