问题:1~n个人围成一圈,从1开始报数,每次数到m这个人就出列,问最后剩下的是几号?
做法:递归。
假设剩下的是f(n)号,那么要找f(n)与f(n-1)等的关系,又因为这个游戏是过程式的,可以发现:n个人,出列一个之后,就是n-1个人,我们把编号改一下的话,就f(n-1)这个问题完全一样了:
1 2 3 ... (m) m+1 m+2 ... n
... ( ) 1 2 .....
这个n-1的问题里面, 每个编号都是原来编号 + m,再mod n。所以,要求的那个人的编号也是这个:
f(n) = (f(n-1) + m)%n
网友评论