兔子算法
兔子问题,一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?
//兔子(斐波那契)
function calculateRabbitNum($month)
{
if (0 == $month || 1 == $month) {
return 1;
}
return calculateRabbitNum($month - 1) + calculateRabbitNum($month - 2);
}
var_dump(calculateRabbitNum(12));//144
function getResult($month){
$one = 1; //第一个月兔子的对数
$two = 1; //第二个月兔子的对数
$sum = 0; //第$month个月兔子的对数
if($month < 3){
return ;
}
for($i = 2;$i < $month; $i++){
$sum = $one + $two;
$one = $two;
$two = $sum;
}
echo $month.'个月后共有'.$sum.'对兔子';
}
getResult(12);
每个人的思考方式不同,最后还以图解结束这兔子题吧!(虽然这个题多人都在问,不过用兔子比喻多少有点……)
解题过程就不说了和斐波那契一样,说一下用递归实现
,整体过程就是用
(上上个月兔子对数)+(上个月兔子对数) = 这个月兔子对数
ps:
递去就是满足条件循环,不满足条件停止
return 1;
归来就是,很多个 1 相加,得出最后的对数
return calculateRabbitNum($month - 1) + calculateRabbitNum($month - 2);
也可以用下图理解:
共8只兔子 共13只兔子
网友评论