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

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

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

qq_遁去的一_1 2018-08-02 21:17:40
小羊能活5岁,它在2岁,4岁的时候都会生一只小羊,5岁的时候就死亡了。问:现在有一只刚出生的小羊(0岁),n年后有多少只羊?
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

第一种:

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 的时候就会出现内存不足的情况了。
而第二种方法则完全不必担忧。


查看完整回答
反对 回复 2018-08-05
  • 2 回答
  • 0 关注
  • 934 浏览

添加回答

举报

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