加法递归、乘法递归、LEGB

递归函数_函数调用内存分析_栈帧的创建

def f1(n):
    print("f1:第",n,"次")      #打印出来f1:第 6 次
    if n==0:                  #切记双等于号
        print("over")         
    else:
        f1(n-1)               #得到f1(5),马上进行下一步运算,来不及打印下面的****
    print("f1*******",n)    

f1(6)

阶乘的递归

def f1(n):

    if n==1:                  #切记双等于号
        return 2              #如果是1,最后得到720.如果是2,最后得到1440,如果是0,最后得到0.
    else:                    
        return n*f1(n-1)           
    
result=f1(6)                #这里定义了result
print(result)

嵌套函数与nonlocal

def outer():
    b = 10
    print(b)
    def inner():
        print("inner b",b)     #此时输出的是10
    inner()
outer()
def outer():
    b = 10
    print(b)
    def inner():
        b=20
        print("inner b",b)    #这个时候输出是20
    inner()
outer()
def outer():
    b = 10
    print(b)
    def inner():
        b=20
        print("inner b",b)    #这个时候输出是20
    inner()
    print(b)                  #这个时候输出是10
outer()

做好和下面这个的区分

def outer():
    b = 10
    print(b)
    def inner():
        nonlocal b            #切记书写形式
        b = 20
        print("inner b",b)    #这个时候输出是20
    inner()
    print(b)                  #这个时候输出是20
outer()

LEGB

def outer():
    str="123"

    def inner():
        #str="345"
        print(str)     #输出了345,先从局部空间找,找到以后就不输出了
    inner()
outer()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值