约瑟夫环递归和非递归解法
写点小算法题练练手,两种方法解决约瑟夫环问题。 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小时制
精彩图集
精彩文章