其他分享
首页 > 其他分享> > 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

作者:互联网

 <script>
       // 11.有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),
       //凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
       //写一个数组 存所有的人 
       function fn(n){
        //初始化一个数组
        var nums = []
        for(var i=0;i<n;i++){
            //设置所有的内容都是没有数过的
            nums[i] = false
        }
        //报数
        var count = 0
        var index = 0
        var total = nums.length
        while(total>1){
           if(!nums[index]){
                count++
                //数到了3 将total-1
                if(count==3){
                    count = 0 
                    nums[index] = true //表示已经数到了3
                    total --
                }
           }
           index++
           //数到最后重新循环
           if(index==nums.length){
             index = 0
           }
        }
        //只要拿出里面为false哪个下标就是对应的位置
        for(var index in nums){
            if(!nums[index]){
                return Number(index)+1
            }
        }
       }
       console.log(fn(10)); 
    </script>

标签:count,index,数到,凡报,第几,nums,var,报数
来源: https://www.cnblogs.com/gujmnlk/p/16608420.html