<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <button onclick="commit()">确定</button> </body> <script> function commit() { var people = 100 var node = {//链表节点 n: 1, before: null, next: null } var linked = node for (var i = 2; i <= people; i++) {//链表构建前驱后继 var temp = { n: i, before: null, next: null } node.next = temp temp.before = node node = node.next } node.next = linked//第5个和第1个拉手 linked.before = node node = linked;//出列 console.log(node) console.log(node) //逻辑 for (var i = 1;i<=10000 ; i++) { if (node.next.n === node.n) { break } if (i % 3 === 0) { node.before.next = node.next node.next.before = node.before } node = node.next } console.log(node) console.log(node.n) console.log('outOne'+node.n) } </script> </html> <!--f(1) = 1--> <!--f(2) = 2 = (f(1) + 3) % 2--> <!--f(3) = 2 = (f(2) + 3) % 3--> <!--f(4) = 1 = (f(3) + 3) % 4--> <!--f(5) = 4 = (f(4) + 3) % 5--> <!--...--> <!--f(n) = x = (f(n-1) + 3) % n--> <!--*/--> <!--var total = 100--> <!--var outNum = 3--> <!--var last = 0--> <!--for (var i = 2; i <= total; i++) {--> <!--last = (last + outNum) % i--> <!--}--> <!--var outOne = last + 1--> <!--console.log('outOne' + outOne)-->
【学习】有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
猜你喜欢
转载自blog.csdn.net/qq_33218955/article/details/86604106
今日推荐
周排行