js解决N个人围成一圈,第一个人从1开始报数,报到M的人出列,求最后一个出列的人的编号。

js解决N个人围成一圈,第一个人从1开始报数,报到M的人出列,求最后一个出列的人的编号。 

下面是用js实现的代码
<!DOCTYPE html>
<html lang="en">
<head>
	<title> new document </title>
	<meta charset="utf-8">
	<style>
		
	
	</style>
</head>

<body>
	<script>
<span style="white-space:pre">	function find(n, m) { //定义一个输出最后一个人下标的方法,两个参数 n表示总人数,m表示报的数
    var arr = []; //定义一个空数组
    for (var i = 0; i < n; i++) {
        arr[i] = true; //建立一个可以有n元素的数组,用来模拟报数的总人数 数组中值为true的表示剩下的人,false表示出去的人
    }
    var total = n,
        index = 0,
        count = 0; //定义三个变量total剩下的的人数,index表示数组的下标,count表示从从0-m报的数的下标
    //循环,直到剩下一个人
    while (total > 1) {
        if (arr[index] == true) {
            count++; //如果数组中的值为true,那么从conut+1
            if (count == m) { //判断报数的人的数是否为m,如果为m, 
                count = 0; // 那么重置count计数器
                arr[index] = false; //报m的人出去,即将他的值改为false
                total--; //将剩下的人数-1
            }
        }
        index++; //下标+1 
        if (index == arr.length) { //如果到了最后一人,
            index = 0; //重置下标为0
        }
    } //循环结束
    //遍历整个数组
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] == true) { //值为true的人就是剩下的最后一个人 
            return i + 1; //因为数组下标是从0开始的,而报数是从1开始的,所以剩下的那个人报的数为数组下标+1 
        }
    }
    return -1; //如果没有返回-1  
}
console.log(find(7, 2)); //调用find()方法</span>
		

	
	
	</script>
 
</body>
</html>

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值