您的位置:首页 > 职场人生

一个面试题

2014-03-14 14:48 211 查看
一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号:

$m = 13;
$n = 20;
$j = 0;
$monkey = array();
for($i = 0; $i < $n; $i++) //给猴子编号,下标从零开始
{
$monkey[$i] = $i;
}

echo getking($monkey,$m);

function getking($arr,$m) //一个递归程序

{
$arr = array_values($arr);

if(count($arr) == 1)
{
return $arr[0];
}
else
{
if(count($arr) >= $m)
{
unset($arr[$m-1]);
}
else
{
unset($arr[($m%count($arr))-1]);
}
return getking($arr,$m);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐