游戏玩法:
“猴子选大王”是一个趣味游戏,要求一群猴子排成一圈,按“1,2,……,n”依次编号。然后从第1只开始数,数到第m只,把它踢出圈,其后的猴子再从1开始数,数到第m只,再把它踢出去……如此不停地进行下去,直到最后只剩下一只猴子为止,那只猴子就是我们要找的大王。
代码:
var total = prompt('输入猴子的整数');
var kick = prompt('踢出第几只猴子');
var monkey = [];
for (var i = 1;i <= total;++i){ //创建猴子数组
monkey.push(i);
}
i = 0; //记录每次参与游戏(报数)的猴子的位置
while (monkey.length > 1){ //在猴子数量大于1的时候进行循环
++i; //猴子报数从monkey数组的开头取出猴子
head = monkey.shift(); //猴子报数
if (i % kick != 0){ //判断是否踢出猴子,不提出则把该猴子添加到monkey数组的尾部
monkey.push(head); //继续参加游戏的猴子
}
}
console.log('猴王编号:' + monkey[0]);
原理:
total=10
kick=4
3-6行代码
monkey=[1] i = 1 判断:1 < 10
monkey=[1,2] i = 2 判断:2 < 10
monkey=[1,2,3] i = 3 判断:3 < 10
monkey=[1,2,3,4] i = 4 判断:4 < 10
monkey=[1,2,3,4,5] i = 5 判断:5 < 10
monkey=[1,2,3,4,5,6] i = 6 判断:6 < 10
monkey=[1,2,3,4,5,6,7] i = 7 判断:7 < 10
monkey=[1,2,3,4,5,6,7,8] i = 8 判断:8 < 10
monkey=[1,2,3,4,5,6,7,8,9] i = 9 判断:9 < 10
monkey=[1,2,3,4,5,6,7,8,9,10] i = 10 判断:10 < 10 ====> false
最后结果为monkey=[1,2,3,4,5,6,7,8,9,10]
7-14行代码
i = 0
第一轮
i = 1 head = 1 monkey = [2,3,4,5,6,