Python3中的递归函数

递归函数

就是定义了一个函数,然后在函数内,自己调用了自己(这个函数)
递归函数内必须要有结束,不然就会一直调用下去..死循环,直到调用的层数越来越多,栈溢出
递归函数是一层层进入,再一层一层返回
递归函数的效率并不高,尽量能不用就不用,不太适合庞大的数据量
一个函数如果调用后没有结束,那么栈空间中就一直一直存在,直到这个函数运算结束才销毁。
例子:
就像传纸条,你坐在最后一排向第一排的人传纸条,这时怎么办?
向你前一个人传递这个纸条,于是这个人继续向他前一个人传递电话...
重复这个过程,直到传递到了纸条,再将纸条向后一个个传递回来...


# 初步认识递归函数  3 2 1 0
# def digui(num):
#     print(num)
#
#     # 检测当前的值是否到了0
#     if num > 0:
#         # 调用函数自己本身
#         digui(num-1)
#
# digui(3)


解析当前递归函数的执行过程:
digui(3) ==> 3
    3 > 0
    digui (3-1) ==> 2
        2 > 0
        digui (2-1) ==> 1
            1 > 0
            digui (1-1) ==> 0


def digui(num):
    print(num)

    # 检测当前的值是否到了0
    if num > 0:
        # 调用函数自己本身
        digui(num-1)

    print(num)
digui(3)


解析当前递归函数的执行过程:
digui(3) ==> 3
    3 > 0
    digui (3-1) ==> 2
        2 > 0
        digui (2-1) ==> 1
            1 > 0
            digui (1-1) ==> 0
            0 > 0 ?  X
            digui (0) ==> 0
        digui(1)  ==> 1
    digui (2)  ==> 2
digui(3)  ==> 3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值