递归实现吸烟问题

吸烟有危害,不仅仅危害人体健康,还会对社会产生不良的影响。吸烟还很容易引起喉头炎、气管炎,肺气肿等问题; 那么现在假设人一生抽烟10000根达到极限峰值,再抽一根烟就像压倒骆驼的最后一根稻草,会使人体爆发疾病问题; 每天一个人抽烟的个数都比前天多一根(第一天抽一根),且一周只有工作日(周一~周五)会吸烟; 请使用递归的方式求出一个人按照以上方式抽烟达到10000根,爆发疾病需要历经多少天

def smoker(day, count, amount):
    """
    递归解决吸烟问题
    :param day: 当前的天数
    :param count: 当天的吸烟数量
    :param amount: 总计的吸烟数量
    :return: 吸到10000根烟的天数
    """
    if amount >= 10000:
        # 如果吸烟总数大于10000, 返回天数
        return day

    else:
        day += 1 # 每吸一次烟,天数加1
        if day % 7 != 6 and day % 7 != 0:
            # 只有周六,周日不吸烟,判断不是周六,也不是周日
            count += 1 # 当天吸烟的数量
            amount += count # 目前为止,吸烟的总数量

        return smoker(day, count, amount)


print(smoker(1, 1, 1)) # 第1天,吸了1根烟,总共吸了1根烟

最后修改:2021 年 08 月 31 日
如果觉得我的文章对你有用,请随意赞赏