标签:测试 新员工 function 三个月 离职 最大 nbsp return mon
先描述问题:公司创立只有一位员工,每名员工经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; ?>
标签:测试 新员工 function 三个月 离职 最大 nbsp return mon
原文地址:http://www.cnblogs.com/52-hz/p/7550996.html