有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>
posted @ 2022-08-20 18:55  叮叮巴士  阅读(53)  评论(0编辑  收藏  举报