题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总对数为多少?
程序分析:
每个月兔子的对数 = 当前兔子对数+新出生兔子对数
相对这个月
1. 当前兔子对数即为上个月兔子对数
2. 根据题意兔子从出生后第3个月起每个月都生一对兔子,那么,当前兔子对数中能生一对兔子的数量即为这个月往前推2个月的兔子对数,这些兔子对符合生育条件,与新生兔子对数为1:1比例
第一个月-----------------1
第二个月-----------------1
第三个月-----------------2
第四个月-----------------3 (2+1)
第五个月-----------------5 (3+2)
第六个月-----------------8 (5+3)
第七个月-----------------13(8+5)
......
从中发现,从第三个月开始,前两个月兔子对数之和为第三个月兔子对总数, 即斐波那契数列, Sn= Sn-1+Sn-2
php代码
public function fibonacci($month=3){ $i = 1; $j = 1; $sum =1; if($month >= 3){ for ($index=3;$index<=$month;$index++) { $sum = $i+$j; $i = $j; $j = $sum; } } echo $sum; }