我想问为什么约瑟夫问题的递推公式是s =(s+m)% I;谢谢你
首先,题目上,一个圈有n个人,举报数量从1依次到M,向M举报的人退出(死)。
现在我们来看递归,因为为了方便表达(s+m)%i=0,假设第一个人的数字为0(从头开始)。
既然问递归,那就不说步骤了,就说这个公式。
设赢家的号码是0)f(我最后一个人只有他,当然是0)。F (I)表示当赢家还剩I人时的游戏号码。
那么f(1)=0。
f(i)=[f(i-1)+m]%i。
这里我们可以这样理解。
如果这场比赛获胜者的编号是K(从0开始编号),每局比赛会有m个人喊出他的编号(注意,编号是从0开始的,那么喊m-1的人就死了,但这个人是第m个人),第m个人就是获胜者前面的k+1个人, 那么如果最后一轮游戏的人数足够多(叫做那么最后一局赢家的人数是[(M-1)+(k+1)]= M+K(M-1代表死去的人的人数,K+1代表死去的人后面第N个人的人数),也就是他就是最后一局的M+。
但是,为什么是%i,因为如果上一局人数不是m-1,那么就会有人报两次甚至更多次!!!!那么,可以看作是数学中的周期性问题,所以%i,假设倒数第二句,i=2。
那么,我是不是扮演了一个有限数的角色,即能得到的数只有0和1(只有这两个余数)。那么,知道m+k是人足够多的情况下赢家的数,那么(k+m)%i就把他的数变成0~i-1的循环,也就是让K是?i=2 .?放?0?1?2?3?进不去2?3成为?0?1?这是什么?0101?
那么它是这个游戏中赢家的号码吗?
那么赢家不是第一人s+1!
楼主你好,我昨天刚写完这个问题。看到你的问题,写下了自己的感受(可能不是很好,不知道楼主能不能看懂。第一次写这个问题,不要怪我文笔不好。楼主可以试试从1开始计数的方法,而不是从0开始,这样应该更容易理解。刚才写的时候也想过)
我只有这些了。希望楼主采纳。可以问什么问题?我们可以继续讨论。
对了,我给你加点东西