有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛
解题思路:使用递归 每一头母牛都会按照上述规则 同样的规律使用每个个体,封装方法后递归调用
/**
* @param $int 年限
* @return int 最后的牛的总量
*/
function Countcows($years) {
static $cows_num = 1;
if($years<4) return 1; //牛在第四年之后才开始繁育,所以4年以内只有一头 我们直接返回1
for($i=1; $i<=$years; $i++) {
if($i >= 4 && $i < 15) { //4-15年 牛每年发育一头 所以 牛的数量增加一头
$cows_num ++;
Countcows($years - $i); //总年限 - 已经过去的年的时间=新生牛存活的时间 将它递归算新牛的繁育数量
}
if($i == 20) $cows_num --; //牛只能存活20年 所以第20年牛死亡
}
return $cows_num;
}
echo Countcows(16);