难以理解的代码!有没有人愿意指导一番

img

img


如图,真的好难理解啊,代码是正确的,可以通过。不能明白这个循环内容,试过比划出来过程也看不懂…要崩溃了啊

相当于在逆推票出去的过程,假设现在剩n个人,且最后保留下来的人是第k个,求剩n+1个人的时候保留下来的是哪个人,相当于在算后n个人之前,要先数3个人,所以后面人的id需要向后移3位。
比如5个人的时候票人的过程是这样(假设最后留下来的是3,假设的,实际是不是不知道)

0 1 2 3 4
        ^

那么再多加一轮的时候,就相当于在这批数前面加上一趟1 2 3

0 1 2 3 4 5
* * * 0 1 2
3 4
  ^

原本3的id就变成了(4 + 3)% 6 = 1

其实就是for循环的逻辑 注意和while循环作比较

img

供参考:利用数学思路解决约瑟夫环问题https://www.bilibili.com/video/av625128625/