1.一群猴子围成一圈,按照1、2、……、n编号。然后从第一个开始数,数到第m个,把它踢出圈,从它后面开始数,数到第m个,把它踢出去……,以此类推,直到结束为止只剩下一只猴子,那只猴子被称为国王。需要编程模拟这个过程,输入m,n,输出最后一个王的编号。函数国王($n,$m){$monkeys=range(1,$n);//创建一个从1到n的数组$i=0;while(count($monkeys)>1){//循环条件为猴子数量大于1if(($i+1)%$m==0){//$i为数组下标;$i+1是猴子标签unset($monkeys[$i]);//余数等于0表示恰好是第m个,删除,使用unset删除,保持下标关系}else{array_push($monkeys,$monkeys[$i]);//如果余数不等于0,则将数组下标$i放在末尾,形成循环结构unset($monkeys[$i]);}$i++;//$i循环+1,不断删除猴子,或者push到数组}returncurrent($monkeys);//猴子的数量等于在1处输出猴子标签,得到猴王}echoking(6,3);2、有一头母牛,4岁就能生育,每年产一头母牛。出生的牛都是一样的。能生,20岁死,问n年后有多少头牛。函数niu($y){static$num=1;//定义一个静态变量;初始化奶牛数量为1for($i=1;$i<=$y;$i++){if($i>=4&&$i<15){//每年递增计算,从4开始岁+1,15岁不能生育$num++;牛($y-$i);//递归计算小牛$num,小牛长了多少年For$y-$i}elseif($i==20){$num--;使用T(value)的形式改变输出行数*/classT{private$num;publicfunction__construct($var=10){if($var<3)die("这个值太小了!");$this->num=$var;}publicfunctiondisplay(){$n=$this->num;$arr=数组();//$arr=array_fill(0,$n+1,array_fill(0,$n+1,0));$arr[1]=array_fill(0,3,0);$arr[1][1]=1;echostr_pad("",$n*12,"");printf("%3d",$arr[1][1]);回声“”;对于($i=2;$i<=$n;$i++){$arr[$i]=array_fill(0,($i+2),0);for($j=1;$j<=$i;$j++){if($j==1)echostr_pad("",($n+1-$i)*12,"");printf("%3d",$arr[$i][$j]=$arr[$i-1][$j-1]+$arr[$i-1][$j]);回声“”;}回声“”;}}}$yh=newT('3');//$yh=newT(quantity);$yh->display();?>4、冒泡排序函数maopao($arr){$len=count($arr);对于($k=0;$k<=$len;$k++){对于($j=$len-1;$j>$k;$j--){如果($arr[$j]<$arr[$j-1]){$temp=$arr[$j];$arr[$j]=$arr[$j-1];$arr[$j-1]=$temp;}}}return$arr;}5.快速排序函数quickSort($arr){//先判断是否继续$length=count($arr);如果($length<=1){返回$arr;}//选择第一个元素作为基准$base_num=$arr[0];//遍历除标尺以外的所有元素,按照大小关系放入两个数组//初始化两个数组$left_array=array();//$right_array=array()小于基数;//大于基数for($i=1;$i<$length;$i++){if($base_num>$arr[$i]){//放入左数组$left_array[]=$arr[$我];}else{//放入右边$right_array[]=$arr[$i];}}//同样的方法在左右数组上递归调用这个函数$left_array=quickSort($left_array);$right_array=quickSort($right_array);//合并返回array_merge($left_array,array($base_num),$right_array);}6.二分搜索算法(半搜索算法)functionbinsearch($x,$a){$c=count($a);$低=0;$高=$c-1;while($lower<=$high){$middle=intval(($lower+$high)/2);如果($a[$middle]>$x){$high=$middle-1;}elseif($a[$middle]<$x){$lower=$middle+1;}else{返回$middle;}}returnfalse;}7.PHP奇异算法13、无限分类函数树($arr,$pid=0,$level=0){static$list=array();foreach($arras$v){//如果是顶级类别,则保存在$list中,并以该节点为根节点,遍历其子节点if($v['pid']==$pid){$v['level']=$level;$列表[]=$v;树($arr,$v['id'],$level+1);}}返回$列表;}14。Getthefirstdayandlastdayoflastmonth//获取上个月的第一天date('Y-m-01',strtotime('-1month'));//获取上个月的最后一天date('Y-m-t',strtotime('-1month'));15.随机输入一个数查询对应的数据区间//把区间换成数组,用二分法求区间函数binsearch($x,$a){$c=count($a);$低=0;$高=$c-1;while($lower<=$high){$middle=intval(($lower+$high)/2);如果($a[$middle]>=$x){$high=$middle-1;}elseif($a[$middle]<=$x){$lower=$middle+1;}}return'intheinterval'.$a[$high].'到'.$a[$lower];}$array=['1','50','100','150','200','250','300'];$a='120';echobinsearch($a,$array);注意了,大家别迷路了,以上就是本文的全部内容,能看到这里的都是人才。前面说了PHP的技术点很多,就是因为太多写不下去了,写完你也不会看太多,所以我这里整理成了PDF和文档.如果您需要,可以点击输入密码:PHP+《平台》获取更多学习内容。大厂】优质PHP架构师教程目录,只要你能看懂,保证你的薪水更上一层楼(持续更新中),以上内容希望对大家有所帮助。很多PHPer在前进的过程中总会遇到一些问题和瓶颈。业务代码写多了没有方向感,不知道从哪里开始改进。我整理了一些这方面的资料,包括但不限于:分布式架构、高扩展性、高性能、高并发、服务器性能调优、TP6、Laravel、YII2、Redis、Swoole、Swoft、Kafka、Mysql优化、shell脚本、需要进阶干货的可以免费分享Docker、微服务、Nginx等知识点,需要的可以加入我的PHP技术交流群
