50个人围成一圈排上编号1-50,然后按照1、 2、 3循环报数。报到3的人移除,剩下的人接着从1开始报数,直至剩下不能再报到3的人。请问最后一人的编号是多少?如何用代码来实现。
// 分析:此问题考察递归
function circle(arr) {
if (arr.length < 3) {
console.log(arr[arr.length - 1])
return;
}
for (let i = 0; i < arr.length; i++) {
if ((i + 1) % 3 == 0) {
arr.splice(i, 1)
i--;
}
}
circle(arr)
}
let arr = []
for (let i = 1; i <= 50; i++) {
arr.push(i)
}
circle(arr);
网友评论