• 欢迎光临~

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

开发技术 开发技术 2022-08-20 次浏览
 <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>
喜欢 (0)