古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,用户输入一个月份数,计算并在一行内输出该月的兔子总对数以及前一个月与该月兔子数量的比值,比值结果保留小数点后3位,数字间用空格分隔。python
时间: 2023-10-16 09:31:00 浏览: 82
JAVA经典算法,有可能在面试中出现的题目哟.doc
可以用递归来解决这个问题,每个月的兔子总对数等于前一个月的兔子总对数加上新出生的兔子对数,新出生的兔子对数等于前一个月兔子总对数。具体实现如下:
```python
def rabbit(month):
if month == 1 or month == 2:
return 1
else:
pre_month = rabbit(month-1)
pre_pre_month = rabbit(month-2)
total = pre_month + pre_pre_month
new = pre_month
return total + new
month = int(input())
total = rabbit(month)
pre_total = rabbit(month-1)
ratio = round(total/pre_total, 3)
print(total, ratio)
```
运行程序,输入月份数,即可得到该月的兔子总对数以及前一个月与该月兔子数量的比值。
阅读全文