网上的递推方法实在是看不懂,只能用土办法-归纳总结。经过推算,假如不是从0开始会很麻烦。在归纳的时候发现有问题可以灵活一点。
个数 数据 最后一个退出的编号
1 0 0 0
2 0 1 1 (0+3)%2
3 0 1 2 1 (1+3)%3
4 0 1 2 3 0 (1+3)%4
5 0 1 2 3 4 3 (0+3)%5
发现规律 :f(i)=(f(i-1)+k)%lenght 怎么证明?小弟不会!!!!
/** * 报数到第K个退出 * 总共m个人 * 第i个出局的人 * @param m * @param k * @param i * @return */ public static int recursionOfJosephCircle(int m,int k,int i) { if(m==1) return 0; else return (recursionOfJosephCircle(m-1, k, i-1)+k)%m; }
时间: 2024-10-11 15:15:55