小羊能活5歲,它在2歲,4歲的時候都會生一只小羊,5歲的時候就死亡了。問:現在有一只剛出生的小羊(0歲),n年后有多少只羊?
4 回答
素胚勾勒不出你
TA貢獻1827條經驗 獲得超9個贊
第一種:
function born($n){
$all=[0]; for($i=0;$i<$n;$i++){
$c=count($all); for($j=0;$j<$c;$j++){
$all[$j]=$age=$all[$j]+1; if($age==2||$age==4){
$all[]=0;
}
}
} return $all;
}//返回的數據中,把大于等于5的去掉就是了。第二種:(在 @雪之祈舞 的回答上作了一點修改)
function sheep($n){
$y=[ 0=>1, 1=>0, 2=>0, 3=>0, 4=>0, 5=>0,
]; for($i=0;$i<$n;$i++){ for($j=5;$j>0;$j--){
$y[$j]=$y[$j-1];
}
$born=$y[2]+$y[4];
$y[0]=$born;
} return $y;
}//unset($y[5]) 再把各項加起來就可以了。兩種方法得到的結果是一樣的,但第一種方法不斷往數組里添加剛出生的羊,數組長度越來越大,我測試了一下,大于 50 的時候就會出現內存不足的情況了。
而第二種方法則完全不必擔憂。
holdtom
TA貢獻1805條經驗 獲得超10個贊
$y=[0=>1,1=>0,2=>0,3=>0,4=>0,5=>0];
$n =20;for($i=0;$i<=$n;$i++)
{
$temp = ($y[2]+$y[4])*2;
$y[5]=$y[4];
$y[4]=$y[3];
$y[3]=$y[2];
$y[2]=$y[1];
$y[1]=$y[0];
$y[0]=$temp;
}
print_r($y);
print_r(array_sum($y));添加回答
舉報
0/150
提交
取消
