7.员工转正问题的实现-PHP

  先描述问题:公司创立只有一位员工,每名员工经3月后转正,成为正式员工后可每月推荐一名新员工,新员工经三月后,转正又可推荐新员工;假设公司第一位员工也需要试用期,并且所有员工均不离职,请算出第n月员工数量。

  分析:经过归纳分析:得出以下数据1,1,1,2,3,4,6,9,13,,,,,

  实现代码如下:

<?php
    /*
    *转正问题
    *1,1,1,2,3,4,6,9,13,,,,,
    */
    function rabit($month){
     //前三个月员工数为1人
if($month<=3){ $nums = 1; return $nums; }else{ $f1 = 1; $f2 = 1; $f3 = 1;        //判断月数在第几次循环中(向下取结果值),当月数是3的倍数时,为第倍数减一次循环 if($month%3 == 0){ $m = $month/3 -1; }else{ $m = floor($month/3); }
       //循环次数
for($i=1;$i<=$m;$i++){
         //第一次循环的三个值
$f = $f1 + $f3; $f5 = $f2 + $f; $f6 = $f3 + $f5;
         //当循环数等于条件值时,跳出循环
if($i == $m){
            //当月数为3的整数倍时是最大值
if($month%3 == 0){ return $f6;
            //当月数取余3为1时是最小值 }
else if($month%3 == 1){ return $f;
            //当月数取余3为2时是中间值 }
else if($month%3 == 2){ return $f5; }
          //循环次数小于条件值时,进行循环赋值,层层推进 }
else{ $f1 = $f; $f2 = $f5; $f3 = $f6; } } } }
  //测试
$month1 = 1; $result1 = rabit($month1); echo $result1."<br>"; $month2 = 12; $result2 = rabit($month2); echo $result2; ?>

 

posted @ 2017-09-19 11:43  5.2Hz  阅读(321)  评论(0编辑  收藏  举报