百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

python笔记22:两个小例子弄明白-递归函数

off999 2024-12-08 17:27 20 浏览 0 评论

主要内容:

  • 小目标:掌握递归函数
  • 主要内容:递归函数原理,递归函数应用

如果看完这篇文章,你还是弄不明白递归函数;

你来找我,我保证不打你,我给你发100的大红包。

1. 递归函数

递归函数:函数自己调用自己

  • 一个伪代码:
def func(value):
    if 判断条件:
        #函数自己调用自己
        func()
    ...
func()

递归函数关键点:

1.函数自己调用自己;

2.调用结束条件;

3.注意递归层数不能太多,否则,可能会报异常;

2. 实现阶乘

  • 需求:N的阶乘:N!=N*(N-1)*(N-2)...2*1 实现5的阶乘

2.1 循环实现

  • while语句实现
def factorial(n):
    value = 1
    while n > 1:
        value *= n
        n -= 1
    return value
factorial(5)

结果:120

  • for语句实现:
def factorial(n):
    value = 1
    for i in range(5,1,-1):
        value *= i
    return value
factorial(5)

结果:120

2.2 递归实现

  • 使用递归实现N阶乘
def factorial(n):
    print(n)
    #递归结束条件n = 1结束
    if n > 1:
        # n*n-1,理解factorial调用自己
        return n * factorial(n-1)
    return n
factorial(5)

结果:

5
4
3
2
1
120
  • 分析:
第一轮:5*factorial(5-1)
第二轮:4*factorial(4-1)
第三轮:3*factorial(3-1)
第四轮:2*factorial(2-1)
第五轮:返回1
然后依次计算,结果:1*2*3*4*5=120

如下图



  • 问题:将n设置一个较大数字报异常:
RecursionError: maximum recursion depth exceeded in comparison

递归函数遍历多维列表

需求:遍历多维数字列表,将所有偶数添加到新列表中。

listv = [1,2,3,[4,6,7,8,[10,21,22]]]
  • 问题:列表中是还有列表,这个怎么做?
  • 使用递归一个函数就搞定了
  • 代码实现:
def findEven(src,dest):
    for item in src:
        if isinstance(item, list):
            #当前元素为列表,继续调用
            findEven(item, dest)
        elif item%2==0:#求余
            dest.append(item)
listv = [1,2,3,[4,6,7,8,[10,21,22]]]
dest = []
findEven(listv, dest)
print(dest)

结果:

[2, 4, 6, 8, 10, 22]

总结:

递归函数要点:

  1. 自己调用自己,
  2. 注意结束条件与调用深度。

相关推荐

2017年联想笔记本电脑有几款

17年的笔记本电脑可以勉强安装一下win10系统试试。关键看你的内存有多少,内存大于4个G的话可以安装win10速度不会太慢。最好是安装win7系统,这样能发挥你这台电脑的所有的性能,你用起来也会感觉...

当前显卡排名(当下显卡排行)

101、Irispro5802、Iris62002、Iris52004、UHD630/6205、HD6306、HD5307、HD46008、HD44009、HD420010、HD40...

win10专业版激活变成企业版(win10专业版激活变成企业版怎么办)

win10永久激活密钥很少,一旦网上有分享,等你拿到时就超过期限了,一般是要购买。激活win10系统可以使用激活工具:win10激活工具下载一、win10专业版产品密钥NXRQM-CXV6P-PBGV...

ghostwinxp下载纯净版(ghost win7纯净版下载)

可以下载的,现在官网和其他网站上都可以下载xp原版的。可以通过以下步骤下载我的世界游戏到xp系统中:1.首先打开你的浏览器软件,搜索关键字“我的世界xp版下载”,找到可靠下载地址;2.从下载页面下...

惠普完整版驱动(惠普最新驱动)

惠普官方的标准操作:HP1050安装驱动步骤:一:准备:拿出驱动光盘放入光驱或到HP官网下载完整版驱动。二:不要插USB数据线或插上线打印机电源不要开,安装完整版驱动,当程序提示插入USB数据线时,插...

浏览器最好用的(浏览器最好用的插件)

一、谷歌浏览器谷歌浏览器是公认最好用的,这个可以从市场占有率看出端倪,超过三分之二的用户使用谷歌浏览器。Chrome浏览器以简洁快速著称,不管是普通用户还是开发人员,chrome浏览器都是首选。Chr...

fast路由器6位初始密码(fast路由器的密码)

答:fast路由器初始密码是admin;新款的迅捷无线路由器,管理界面没有初始密码。查看迅捷无线路由器底部标签,标签上标注了admin,说明初始密码就是admin;如果没有,说明该路由器没有初始密码。...

硬盘恢复软件哪个好(硬盘 恢复软件)

迷你兔数据恢复工具:支持恢复硬盘丢失的数据Pc3000数据恢复软件是一款非常专业的硬盘修复工具,能够对电脑硬盘资料数据进行修复,通过使用这个软件可以解决硬盘数据丢失故障,是一个用户进行硬盘资料修复好帮...

十大品牌监控摄像头排名(十大品牌监控摄像头排名第一)

答:1、华为/HUAWEI9.92、小米/MI9.63、罗技/Logitech9.64、海康威视/HIKVISION9.25、乔安/Jooan9.26、普联/TP-LINK9.27、乐橙8.98、萤石...

360手机助手老旧版本大全(360手机助手 老版本)

在设置里面找到历史记录就可能查看360手机助手·换机神器是安卓系统的换机软件,因为苹果的换机软件是爱思。1、打开360手机卫士,登陆账号,点击账号。2、进入个人中心,点击账户安全,在密保工具中,点击解...

系统应用工程师(系统工程的应用)

信息软件系统工程师有前途,毕业以后可以从事软件开发,软件系统的维护,运营等等,和计算机有关的工作内容,因为计算机专业可以说是一个非常热门的专业,很多的大型企业公司基本上都是以计算机研发为主的,薪资福利...

qq恢复系统常见问题(qq恢复系统常见问题及答案)

QQ好友恢复系统一直显示服务器频繁有可能是系统的问题,你的qq重新更新一下,或者你卸载了重新下载一下就有可能好了。您好,很高兴为您解答:您可以试试清空下IE内存,然后关掉不必要的程序,尽量在电脑运...

win10自带的office不见了(win10自带的office在哪个文件夹)

win10系统的office在电脑硬盘office的安装目录里,具体打开安装目录的操作如下:1、首先我们右键点击word,打开方式,选择默认程序打开。2、在默认框打钩,点击【浏览】。3、打开你安装of...

华为官网序列号查询入口(华为官网序列号查询入口手写笔)
  • 华为官网序列号查询入口(华为官网序列号查询入口手写笔)
  • 华为官网序列号查询入口(华为官网序列号查询入口手写笔)
  • 华为官网序列号查询入口(华为官网序列号查询入口手写笔)
  • 华为官网序列号查询入口(华为官网序列号查询入口手写笔)
手机主题美化包(手机主题美化包下载)
  • 手机主题美化包(手机主题美化包下载)
  • 手机主题美化包(手机主题美化包下载)
  • 手机主题美化包(手机主题美化包下载)
  • 手机主题美化包(手机主题美化包下载)

取消回复欢迎 发表评论: