我們采用閉包自調(diào)用的方式,很輕松的解決了這個(gè)問(wèn)題欠气,無(wú)需循環(huán)厅各,代碼美觀可讀性強(qiáng)
1.我在桌面創(chuàng)建了一個(gè)php文件,實(shí)現(xiàn)過(guò)程如下:
function monkey(int $m,int $n){
????????$arr = range(1,$n);
????????$fn = function ($m,&$arr) use(&$fn){
????????????????if( count($arr) === 1 ) { return true;? } //選出猴子大王预柒,結(jié)束執(zhí)行
????????????????if( count($arr) >= $m ){ //判斷s剩余猴子數(shù)量是否大于指定數(shù)
????????????????????????$key = array_keys($arr)[$m-1];? //第m只猴子的下標(biāo)
????????????????????????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只猴子的下標(biāo)
????????????????????????unset($arr[$key]);
????????????????};
????????????????$fn($m,$arr); //自調(diào)用
};
$fn($m,$arr);? //執(zhí)行
echo array_values($arr)[0]; 輸出結(jié)果
}
monkey($argv[1],$argv[2]);? //調(diào)用
2. 運(yùn)行過(guò)程如下:
3.命令行調(diào)用:
我只是一個(gè)程序員队塘,并不是專業(yè)寫手,會(huì)不會(huì)更宜鸯,在哪個(gè)博客更憔古,都是由心情而定,如果喜歡我的可以粉我啊淋袖,說(shuō)不定我就能更很多干貨上來(lái)