我们采用闭包自调用的方式,很轻松的解决了这个问题,无需循环,代码美观可读性强
1.我在桌面创建了一个php文件,实现过程如下:
function monkey(int $m,int $n){
$arr = range(1,$n);
$fn = function ($m,&$arr) use(&$fn){
if( count($arr) === 1 ) { return true; } //选出猴子大王,结束执行
if( count($arr) >= $m ){ //判断s剩余猴子数量是否大于指定数
$key = array_keys($arr)[$m-1]; //第m只猴子的下标
unset($arr[$key]); //踢出第m只猴子
$arr = array_merge( array_splice($arr, $m-1),array_splice($arr,0,$m-1));
}else{
$key = array_keys($arr)[$m%count($arr)-1]; //第m只猴子的下标
unset($arr[$key]);
};
$fn($m,$arr); //自调用
};
$fn($m,$arr); //执行
echo array_values($arr)[0]; 输出结果
}
monkey($argv[1],$argv[2]); //调用
2. 运行过程如下:
3.命令行调用:
END我只是一个程序员,并不是专业写手,会不会更,在哪个博客更,都是由心情而定,如果喜欢我的可以粉我啊,说不定我就能更很多干货上来
网友评论