题目描述:约瑟夫环是一个数学应用题:已知n个人(编号1、2、..n)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个又从1开始报数,数到m的那个人又出列;依次规律重复下去,直到圆桌周围的人全部出列。请编写一个程序,给定n、m计算出列人员先后顺序。
思路:index索引0...n-1表示编号1...n,index = (index + 1) % n实现在0...n-1内递增循环,circle[i] = 0或1,0表示还在圈内没出列,1表示已出列
代码:
function yuesefuhuan(n, m) {
var rest = n,
index = 0,
number = 0,
circle = new Array(n).fill(0)
while(rest) {
number = number + 1 - circle[index]
if(number === m) {
console.log(index + 1)
rest--
circle[index] = 1
number = 0
}
index = (index + 1) % n
}
}