约瑟夫环问题       

##约瑟夫环问题 ###问题 有编号从1到N的N个人坐成一圈报数,报到M的人出局,下一位再从1开始, 如此持续,直止剩下一位为止,报告此人的编号X。输入N,M,求出X。

###分析 N=8 M=3

		0 1 2 3 4 5 6 7
第1次	5 6 X 0 1 2 3 4
第2次	2 3   4 5 X 0 1
 3      X 0   1 2   3 4      
 4        2   3 X   0 1 
 5        X   0     1 2
 6            0     1 X  
 7            X     1
 8                  0

每一次去掉退出的人后,重新排编号

第8次剩下0,对应初始编号6

###代码

递归
def recursion(n, m):
	if(n == 1):
		return 0
	return (recursion(n - 1, m) + m)%n

循环
def loop(n, m):
	a = 0
	for i in range(2, n + 1):
		a = (a + m) % i

	return a


print recursion(10, 11), loop(10, 11)