這不是標題黨,先不要驚訝,請閱讀到最后
題目:
100個人圍一圈編號1-100,依次開始報數,
從1開始,報到3的退出,然后繼續從1開始,報到3退出,直到最后只有2個人,得到編號 58, 91
從1開始,報到4的退出,然后繼續從1開始,報到4退出,直到最后只有3個人,得到編號 34, 45, 97
實現效果:
輸入:3
輸出: 58,91
輸入:4
輸出: 34, 45, 97
---------------------原作者的思路------------
面試題-python3 100個人圍一圈編號1-100,依次開始報數報到3的退出
-----------------以下是本人的思路-------------------
開始嘗試遞歸,發現不好使,后來參考了群友code改進了
感覺代碼還是有點長,不方便理解,后面參考了csdn
Python——報數出圈
https://blog.csdn.net/weixin_44775255/article/details/105693765
加深了理解,然后就原創了下面的極簡代碼
# 極簡 a=list(range(1,101)) n=3 while len(a)>=n: if n-2>=0: a=a[n:]+a[:n-1] print(sorted(a))
------------群內首發---------------
我想說的是,大道至簡,抓住本質,問題就迎刃而解。
感謝上面幾位提供思路,完美解決。