for循环和递归解决兔子问题(成熟期1个月和2个月的)

假设一对初生兔子要一个月才到成熟期,而一对成熟兔子每月会生一对兔子,那么,由一对初生兔子开始,12 个月后会有多少对兔子呢?

1 2 3 5 8 13 21 34 55 89 144 233

仔细观察规律会发现后一项等于前两项之和

function a($m = 12) {
if ($m < -1) return 0;
if ($m == 0 || $m == -1) return 1;
return a($m - 1) + a($m - 2);
}

for ($i = 0; $i < 12; $i++) {
echo $i, " ", a($i), "\n";
}

以下是错版:(成熟期为两个月)(以上是成熟期一个月的斐波那契数列)


一对成年的兔子,一个月可以生一对兔子,新出生的一对兔子在出生后第3个月开始也可以产下一对兔子,现有一对兔子,请问一年后又多少只兔子

开局一对成年兔子
<?php

# 月份数
$m = 5;

# 出生 第一个月 和出生 第二个月的兔子
$temp1 = $temp2 = 0;
# 成年兔子
$adultRabbit = 1;

for ($i = 0; $i < $m; $i++) {
    $oldAdultRabbit = $adultRabbit;
    $adultRabbit += $temp2;
    $temp2 = $temp1;
    $temp1 = $oldAdultRabbit;
}

echo "$adultRabbit + $temp1 + $temp2 = ";
echo $adultRabbit + $temp1 + $temp2, "\n";