一、一羣猴子排成一圈,按1,2,...,n依次編號。而後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去...,如此不停的進行下去,編程
直到最後只剩下一隻猴子爲止,那隻猴子就叫作大王。要求編程模擬此過程,輸入m、n, 輸出最後那個大王的編號。數組
function fn($n ,$m)
{
$arr = range(1,$n);
$i = 0 ; //設置數組指針
while(count($arr)>1)
{
//遍歷數組,判斷當前猴子是否爲出局序號,若是是則出局,不然放到數組最後
if(($i+1) % $m ==0) {
unset($arr[$i]);
} else {
//array_push() 函數向第一個參數的數組尾部添加一個或多個元素(入棧),而後返回新數組的長度。
array_push($arr ,$arr[$i]); //本輪非出局猴子放數組尾部
unset($arr[$i]); //刪除 array_push函數只是將元素複製一份挪到了尾部,因此本來的那個必須刪除
}
$i++;
}
return $arr;
}
print_r(fn(3,3));
函數