关于PHP面试题,大家看看该怎么写?

小羊能活5岁,它在2岁,4岁的时候都会生一只小羊,5岁的时候就死亡了。
问:现在有一只刚出生的小羊(0岁),n年后有多少只羊?

鸿蒙传说
浏览 1349回答 4
4回答

素胚勾勒不出你

第一种:function&nbsp;born($n){ &nbsp;&nbsp;&nbsp;&nbsp;$all=[0];&nbsp;&nbsp;&nbsp;&nbsp;for($i=0;$i<$n;$i++){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$c=count($all);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($j=0;$j<$c;$j++){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$all[$j]=$age=$all[$j]+1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($age==2||$age==4){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$all[]=0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$all; }//返回的数据中,把大于等于5的去掉就是了。第二种:(在 @雪之祈舞 的回答上作了一点修改)function&nbsp;sheep($n){ &nbsp;&nbsp;&nbsp;&nbsp;$y=[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0=>1,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1=>0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2=>0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3=>0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4=>0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5=>0, &nbsp;&nbsp;&nbsp;&nbsp;];&nbsp;&nbsp;&nbsp;&nbsp;for($i=0;$i<$n;$i++){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($j=5;$j>0;$j--){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$y[$j]=$y[$j-1]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$born=$y[2]+$y[4]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$y[0]=$born; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$y; }//unset($y[5])&nbsp;再把各项加起来就可以了。两种方法得到的结果是一样的,但第一种方法不断往数组里添加刚出生的羊,数组长度越来越大,我测试了一下,大于 50 的时候就会出现内存不足的情况了。而第二种方法则完全不必担忧。

holdtom

$y=[0=>1,1=>0,2=>0,3=>0,4=>0,5=>0]; $n&nbsp;=20;for($i=0;$i<=$n;$i++) { &nbsp;&nbsp;&nbsp;&nbsp;$temp&nbsp;=&nbsp;($y[2]+$y[4])*2; &nbsp;&nbsp;&nbsp;&nbsp;$y[5]=$y[4]; &nbsp;&nbsp;&nbsp;&nbsp;$y[4]=$y[3]; &nbsp;&nbsp;&nbsp;&nbsp;$y[3]=$y[2]; &nbsp;&nbsp;&nbsp;&nbsp;$y[2]=$y[1]; &nbsp;&nbsp;&nbsp;&nbsp;$y[1]=$y[0]; &nbsp;&nbsp;&nbsp;&nbsp;$y[0]=$temp; } print_r($y); print_r(array_sum($y));
打开App,查看更多内容
随时随地看视频慕课网APP