兔子繁殖问题(Python版)

编写程序计算,有一对兔子,从出生后第 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

 。。。这结果,似乎就是斐波那契数列... ...

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值