闭包函数&递归函数的使用

一、递归函数

1.什么是递归函数

  • 递归就是一个函数在它的函数体内调用它自身
  • 执行递归函数将反复调用其自身,每调用一次就进入新的一层
  • 递归函数必须有结束条件

2.简单的递归函数结构:

函数内部是在内部在调用自身,例如work,调用2次

def work():
    print("------------------内部执行------------------")
    work()   # 内部在调用执行函数
    
work()    # 去调用会陷入死循环

3.如何查看最大递归深度(可以用sys库查看)

  • 递归深度默认不超过1000次,超过最大值就会报错

     1.获取默认最大递归深度
     	sys.getrecursionlimit()
     2.设置最大的递归深度
     	sys.setrecursionlimit(4000)
    

4.实例:实现数值的阶乘

例如:3= 1*2*3       6= 1*2*3*4*5*6
1 = 1 * 1
2 = 1 * 2
3 = 1 * 2 * 3
4 = 1 * 2 * 3 * 4
5 = 1 * 2 * 3 * 4 * 5
6 = 1 * 2 * 3 * 4 * 5 * 6
..........................
n = (n-1)*n

# 递归实现
def work1(n):
    if n == 1:
        return 1
    else:
        return work1(n - 1) * n


print(work1(4))

这个递归的结束条件是:n == 1

二、闭包函数的应用

1. 什么是闭包

  • 闭包 = 函数 + 一个封闭的作用域

2. 什么是封闭的作用域

  • 外部无法修改的作用域
  • 封闭作用域,闭包函数外层的作用域

3. 闭包的作用

  • 实现数据锁定

4.闭包函数有什么特性

  • 函数嵌套函数
  • 外层函数return返回的是 内层函数
  • 内层函数引用外部的非全局变量

例如:以下的闭包函数

b = 500     # 全局变量
def work():
    a = 200     # 非全局变量

    def wraper():
        print(a)    # 内层函数引用非全局变量

    return wraper     # 外层函数return返回的是 内层函数

# 调用闭包函数work,返回的就是一个闭包
res = work()
res()   # res 就是一个闭包

print(res)      # 返回 wraper 函数>>>>>>>>>>>>>function work.<locals>.wraper at 0x000001D3ACF39A60>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值