PHP约瑟夫环问题

来源:互联网 发布:mac win系统截图快捷键 编辑:程序博客网 时间:2024/05/22 04:54

循环

function circle($arr,$idx,$k){    for($i=0;$i<$idx;$i++){        $tmp = array_shift($arr);        array_push($arr,$tmp);    }    $j = 1;    while(count($arr) > 0){        $tmp = array_shift($arr);        if($j++%$k == 0){            echo $tmp."\n";        }else{            array_push($arr,$tmp);        }    }}$arr = [1,2,3,4,5,6,7,8,9,10,11,12];$idx = 3;$k = 4;circle($arr,$idx,$k);

递归

function circle($arr,$idx,$k){    $len = count($arr);    $i = 1;    if($len == 1){        echo $arr[0]."\n";        return ;    } else {        while($i++ < $k){            $idx++;            $idx = $idx%$len;        }        echo $arr[$idx]."\n";        array_splice($arr,$idx,1);        circle($arr,$idx,$k);    }}$arr = [1,2,3,4,5,6,7,8,9,10,11,12];$idx = 3;$k = 4;circle($arr,$idx,$k);
原创粉丝点击