Python 有17个人围成一圈(编号为:0 ~ 16),从第0号的人开始从1开始报数,凡报到3的倍数的人离开圈子,然后再数下去。直到最后只剩下一个人为止。问此人原来的位置是什么号码
Python代码实现
def test(ren,count=0):
a = len(ren)
b = count
for i in ren:
b += 1
if len(ren) == 1:
return ren
if b % 3 == 0:
b += 1
ren.remove(i)
print(ren)
count += a
return test(ren,count)
ren = list(range(17))
test(ren)
运行结果
[0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 15, 16]
[1, 3, 6, 7, 10, 12, 15, 16]
[3, 6, 10, 12, 16]
[3, 10, 12]
[3, 10]
[3, 10]
[10]