// 猴子找大王游戏
// 有一群猴子排成一圈,按1、2、3、…、n依次编号,然后从第1只开始数,数到第m只,则把它踢出圈,然后从它后面再开始数,当再次数到第m只,继续把它踢出去,以此类推,直到只剩下一只猴子为止,那只猴子就叫作大王。要求编程模拟此过程,输入m和n,输出最后那个大王的编号
// n表示猴子个数,m表示踢出位置
function findMonkeyKing(n, m) {
//因为猴子都是有编号的,所以先把所有的猴子放在一个数组中
//遍历n次 得到一个新数组
var arr = [];
for (var i = 1; i <= n; i++) {
arr.push(i);
}
//只要arr的长度大于1,就还要踢猴子
while (arr.length > 1) {
// 遍历数组, 如果通过的猴子 就把这个猴子放在数组的末端,如果刚好到第m次 则不再移动这个值,而是把这个值删除
for (var i = 0; i < m - 1; i++) {
//把数组的第一个值放在数组的末端
arr.push(arr.shift());
}
//到底第m个猴子的时候,把这个猴子删除掉
arr.shift();
}
return arr[0];
}
var re = findMonkeyKing(100, 8);
console.log(re);