假设第一个月新出生一对兔子,要三个月才能成熟并产下一对兔子,之后每个月,成熟的兔子都会生产一对兔子,求n个月之后能有多少对兔子。
先看表,再推理公式。
假设第n个月总兔子对数为
S
n
S_n
Sn,其中刚出生的为
S
n
,
0
S_{n,0}
Sn,0 ,1个月大的为
S
n
,
1
S_{n,1}
Sn,1 , 两个月大的为
S
n
,
2
S_{n,2}
Sn,2 ,能生的(三个月大)为
S
n
,
3
S_{n,3}
Sn,3。
根据下面等式:
1、
S
n
=
S
n
,
0
+
S
n
,
1
+
S
n
,
2
+
S
n
,
3
Sn=S_{n,0}+S_{n,1}+S_{n,2}+S_{n,3}
Sn=Sn,0+Sn,1+Sn,2+Sn,3
2、 第n月新生兔子是第n-1个月两个月大及以上兔子生的:
S
n
,
0
=
S
n
−
1
,
2
+
S
n
−
1
,
3
S_{n,0}=S_{n-1,2}+S_{n-1,3}
Sn,0=Sn−1,2+Sn−1,3
3、第n个月一个月大兔子是第n-1个月刚出生兔子
S
n
,
1
=
S
n
−
1
,
0
S_{n,1}=S_{n-1,0}
Sn,1=Sn−1,0
4、第n个月两个月大兔子是第n-1个月1个月大兔子
S
n
,
2
=
S
n
−
1
,
1
S_{n,2}=S_{n-1,1}
Sn,2=Sn−1,1
5、第n个月能生的兔子等于第n个月两个月大及以上兔子
S
n
,
3
=
S
n
−
1
,
2
+
S
n
−
1
,
3
S_{n,3}=S_{n-1,2}+S_{n-1,3}
Sn,3=Sn−1,2+Sn−1,3
根据四个等式,以及继续向下分解得到:
S
n
=
S
n
−
2
+
S
n
−
3
+
S
n
−
4
(
n
>
4
)
S_{n}=S_{n-2}+S_{n-3}+S_{n-4}(n>4)
Sn=Sn−2+Sn−3+Sn−4(n>4)
这里和传统兔子间隔一个月成熟情况时差不多的,都是推导出当前月是前几个月相加,然后可以用保存中间值办法编程得到兔子对数,具体代码略