约瑟夫环递归和非递归解法
写点小算法题练练手,两种方法解决约瑟夫环问题。 br / 一种递归的,一种非递归的。
写点小算法题练练手,两种方法解决约瑟夫环问题。
一种递归的,一种非递归的。
一种递归的,一种非递归的。
<?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. [文件] test8.php ~ 339B 下载(18) 跳至 [1] [2] [全屏预览]
<?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 秒格式为天/小时/分钟/秒
- 下一篇:php将12小时制转换成24小时制
精彩图集
精彩文章






