定义

函数调用函数自身,这种方式称为递归,这种函数称为递归函数

递归函数使用过程中,需要找到不变的规律和停止递归的边界条件

因为函数自身调用自身,函数本身的结构不变,只是每次传的参数改变

递归实现过程(扩展):利用栈的思想,先找边界条件,同时将后面的任务存起来,一直到最前面的边界条件,然后回去,每次从栈中取任务,进行计算,一直到最后一个任务取完,结果也计算完毕

递归过程:

  • 递归前进段
  • 递归边界条件
  • 递归返回段

案例讲解

递归实现吸烟问题

吸烟有危害,不仅仅危害人体健康,还会对社会产生不良的影响。吸烟还很容易引起喉头炎、气管炎,肺气肿等问题; 那么现在假设人一生抽烟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 日
如果觉得我的文章对你有用,请随意赞赏