2行代码解决约瑟夫环的问题——python

 用进制的思想来做,结合递归

# -*- coding: utf-8 -*-
"""
约瑟夫环的最简单做法
例题:问一个监狱有100名犯人准备枪毙, 枪毙之前让他们报数, 如果报的单数, 就枪毙, 如果是双数, 就留下,
剩下的人继续依次进行下一轮报数, 直到剩下最后一人就释放, 问如果想活命, 一开始应该站哪个位置
@author: xiaozuo
"""

def getIndex(divide, scale, max_num):
    '''

    :param divide:  他是起始被计算的数, 之后的每次都不同, 第一次它应该是1
    :param scale:  进制数, 按该数进行区分
    :param max_num: 给出的最大数, 需要计算的范围
    :return:  在max_num中存的最大进制数
    '''
    divide *= scale
    return divide if divide * scale >= max_num else getIndex(divide, scale, max_num)
print(getIndex(1,2,100))

 

全部评论

相关推荐

05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务