php面试题羊生羊

来源:互联网 发布:播放视频录音软件 编辑:程序博客网 时间:2024/05/20 01:37

昨天我去面试,里面有一道这样的题目,一只母羊,5岁开始生羊一次生一头,20岁死亡。这边我们认为只要到了20岁就死亡(20岁的时候就不生羊了)。

现在从第一年开始有一只5岁的模样求第n年后又几只羊。

当时我是应为没看到或这个题目稍稍有点闷,回事面试结束以后想了一想其实特别简单。

用一个数组,key记录羊的姓名(编号),用value记录羊的年龄。因为每一只5岁的羊每年生一只羊。判断羊的年龄之后累加即可。

function Yang($n){    if (is_int($n) && $n >= 1) {//判断参数是否是正整数        if ($n > 0 && $n <= 5) {//第一到第五年没有另外成年的羊            return $n;//返回羊的总数        }        if ($n > 5) {            $yang = array();//声明一个空数组。            $sum = 0;//计数器            for ($i = 0; $i < $n; $i++) {//循环年数                if ($i == 0) {//如果是第一年                    $yang[$i] = 5;//第一只羊已经5岁                } else {//如果不是第一年                    for ($j = 0; $j < $i; $j++) {//循环数组这里$j<$i是因为$i是前一次循环后数组元素的个数                        $yang[$j]++;//给每只羊增加岁数                        if ($yang[$j] >= 5 && $yang[$j] < 20) {//判断羊是否可以生羊                            $sum++;//羊总数加1                        }                    }                    $yang[$i] = 0;//增加一头羊                }            }            return $sum;//返回羊的总数        }    } else {        return '年数必须是正整数';    }}

0 0
原创粉丝点击