约瑟夫环递归和非递归解法

PHP中文网
リリース: 2016-05-25 17:09:07
オリジナル
1207 人が閲覧しました

1.test.php

<?php
/**
 * 递归
 */
function king($arr,$n,$i)
{
    if(count($arr) == 1)
    {
        return $arr;
    }
    foreach($arr as $k=>$v)
    {
        if($i== $n)
        {
            array_shift($arr);
            $i = 1; // 重新开始
        }else
        {
            $of1 = array_shift($arr);
            array_push($arr,$of1);
            $i++;  // 指针移动
        }
        return king($arr,$n,$i);
         
    }
}
$i = 1;
$arr = array(1,2,3,4,5,6,7,8,9,10);
$king = king($arr,5,$i);
print_r($king);
// output Array ( [0] => 3 )
ログイン後にコピー

2.test1.php

<?php
/**
 * 循环
 */
function king($arr ,$n)
{
    $i = 0 ;   
    while(count($arr)>1)
    {
       if(($i+1)%$n ==0) 
       {
         unset($arr[$i]) ;
       } 
       else
       {
         unset($arr[$i]) ;
       }
       $i++ ;
    }
return $arr ;
}
$arr = array(1,2,3,4,5,6,7,8,9,10);
print_r(king($arr,5));
// output Array ( [45] => 3 )
ログイン後にコピー
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート