约瑟夫环

是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

要求输入:n,k,m

输出:退出顺序

<?php
//$n 人数 $k 开始位置  $m 要数得数字
function array_f($n,$k,$m){
    for($i=1; $i <= $n ; $i++){
        $oldArr[] = $i;
    }    
    for ($i=0;$i<$k-1;$i++){
        $num = array_shift($oldArr);
        $oldArr[] = $num;
    }
    for($i=0;$i<$n;$i++){
        for($j=0;$j<$m-1;$j++){
            $num = array_shift($oldArr);
            $oldArr[] = $num;
        }
        $newArr[] = array_shift($oldArr);
    }
    var_dump($newArr);
}
array_f(6,2,3);