Python每日一练——第17天:深入理解递归函数



《100天精通Python》专栏推荐白嫖80g Python全栈视频

《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)!
  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
    在这里插入图片描述
    在这里插入图片描述

1. 算法描述

什么是递归函数?

  • 递归函数就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。
  • 递归函数必须有结束条件。一句话总结递归:自我调用且有完成状态

2. 算法分析

设计递归函数三要素

  • 第一要素:明确你这个函数想要干什么
  • 第二要素:寻找递归结束条件
  • 第三要素:找出函数的等价关系式

3. 代码实现

实现代码📝:

def p(n):
    if n == 0:
        return
    print('递归前->', n)
    p(n - 1)
    print('递归后->', n)
p(5)

运行结果👇:

在这里插入图片描述

4. 代码分析

递归函数其实就是每次调用递归的时候把值压入栈中

(1)当第一次调用 p(5) 时,会把 p(5) 压入栈中:
在这里插入图片描述
(2)紧接着调用 p(4)、p(3)、p(2)、p(1),纷纷压入栈中:
在这里插入图片描述

(3)当 p(1) 调用完后,调用 p(0) ,n==0,递归结束

(4)由于栈时后进先出,所以先打印 1:
在这里插入图片描述

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁袁袁袁满

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值