@
pipapa 解决了, 用了您说的统计的思想, 但是没有看懂他们上面的公式, 代码如下
----------------------
<?php
function getRabbit($day)
{
/**
* 初始数组: 用于统计每个年龄的兔子有几只
* 1. 键表示 年龄(几天大)
* 2. 值表示 该年龄的兔子的数量
*/
$arr = [
1 => 1,
2 => 0,
3 => 0,
4 => 0,
5 => 0,
6 => 0,
7 => 0,
8 => 0,
9 => 0,
10 => 0
];
//从第 2 天开始触发循环
for ($i = 0; $i < $day - 1; $i++) {
//先保存昨天记录
$yesterday = $arr;
/**
* 遍历而生成今天兔子年龄的统计情况:
* 1. 今天 1 天大的兔子数量, 是昨天 4-9 天大的兔子的数量的总和, 因为它们今天都到了生育年龄, 各生了 1 只兔子
* 2. 好比: 昨天 2 天大的兔子, 就是今天 3 天大的兔子
*/
foreach ($arr as $k => $v) {
$arr[$k] = $k == 1 ? $yesterday[4] + $yesterday[5] + $yesterday[6] + $yesterday[7] + $yesterday[8] + $yesterday[9] : $yesterday[$k - 1];
}
}
//返回兔子总数
return array_sum($arr);
}
echo getRabbit(100); //第 100 天有 3040556004272 只兔子