SOURCE

// 思路
// 创建一个队列 装入所有编号
// 创建循环 每次循环将前count-1个元素放到队列末尾
// 再从队列头部弹出一个元素 直到队列只剩1个元素 该元素就是淘汰后的结果

function fn(num, count) {
    let queue = [] // 队列
    // 先将所哟编号从头填入队列
    for (let i = 1; i <= num; i++) {
        queue.push(i)
    }
    // 直到队列剩下1个元素一直循环
    while (queue.length > 1) {
        // 将前count - 1个元素 按顺序弹出并填入队列末尾
        for (let i = 1; i < count; i++) {
            queue.push(queue.shift())
        }
        // 再弹出头部元素 作为被淘汰的
        queue.shift()
    }
    // 只剩一个元素 就是结果值
    return queue[0]
}

// 验证
console.log(fn(30, 3)) // 29
console 命令行工具 X clear

                    
>
console