這是約瑟夫環的數學解法(叠代法)的公式,我們可以這樣理解
把n個人想成標號從0開始到n-1的n個人,報到3的人退出圈子,
那麽退出圈子的人在0到n-1的標號為(k+3)%n(其中k為n-1個人時退出圈子的人的標號)
因為有壹個人退出了圈子,所以還剩下n-1個人,我們對剩下的人重新從0到n-2編號,
同樣有公式(k1+3)%n(其中k1為n-2個人時退出圈子的人的標號)得出n-1個人時退出圈子人的標號,
以此類推直到n等於1時kn-1=0也就是1個人時留下的就是標號為0的人
以此有遞推公式f(1)=0,f(i)=(f(i-1)+3)%i f(i)為第i次退出圈子的人
我們用for循環從2個人時開始反推,經過n-1次叠代,去除退出圈子的人,
從而可以得到n個人時最後壹個退出的人的標號為幾,也就是最後留下的人的標號是幾,
因為我們每次標號都是從0開始所以最後退出的人的實際編號=標號+1.
有了上述分析我們就不難得出程序(見圖)