为了账号安全,请及时绑定邮箱和手机立即绑定

一道PHP面试题,感觉自己写的不是很优雅,想看看大家怎么写的

一道PHP面试题,感觉自己写的不是很优雅,想看看大家怎么写的

莫回无 2019-05-09 22:40:09
小羊能活5岁,它在2岁,4岁的时候都会生一只小羊,5岁的时候就死亡了。问:现在有一只刚出生的小羊(0岁),n年后有多少只羊?
查看完整描述

2 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

第一种:
functionborn($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的去掉就是了。
第二种:(在@雪之祈舞的回答上作了一点修改)
functionsheep($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的时候就会出现内存不足的情况了。而第二种方法则完全不必担忧。
                            
查看完整回答
反对 回复 2019-05-09
  • 2 回答
  • 0 关注
  • 354 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信