python递归的定义_递归定义 - MR_黄Python之路 - 博客园

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

'''

递:去

归:回

有去有回是递归

'''

# (1) 最简单的递归函数

def digui(n):

print(n)

if n>0:

digui(n-1)

print(n)

digui(5)

'''

代码解析:

去的过程:

n = 5

print(5) 5>0 digui(5-1) => digui(4) 执行到第12行,自己调用自己,代码暂定在12行,发生阻塞

print(4) 4>0 digui(4-1) => digui(3) 执行到第12行,自己调用自己,代码暂定在12行,发生阻塞

print(3) 3>0 digui(3-1) => digui(2) 执行到第12行,自己调用自己,代码暂定在12行,发生阻塞

print(2) 2>0 digui(2-1) => digui(1) 执行到第12行,自己调用自己,代码暂定在12行,发生阻塞

print(1) 1>0 digui(1-1) => digui(0) 执行到第12行,自己调用自己,代码暂定在12行,发生阻塞

print(0) 0>0? 条件不满足,代码向下执行,

print(0)

如果函数执行到最后一层调用结束,要触底反弹,回到上一层函数调用处

回的过程:

print(1) 回到参数为1的第12行 代码继续向下执行, print(1)

print(2) 回到参数为2的第12行 代码继续向下执行, print(2)

print(3) 回到参数为3的第12行 代码继续向下执行, print(3)

print(4) 回到参数为4的第12行 代码继续向下执行, print(4)

print(5) 回到参数为5的第12行 代码继续向下执行, print(5)

5 4 3 2 1 0 0 1 2 3 4 5

'''

'''

栈帧空间 : 负责运行函数而开辟的空间

(1)递归函数整体过程: 调用一层函数就是开辟一层栈帧空间,结束一层函数,就是释放一层栈帧空间,

递归函数实际上就是开辟和释放栈帧空间的过程

(2)递归函数回的过程: 如果函数走到最后一层执行结束了,要回到上一层空间函数调用处,继续向下执行,直到所有代码执行完毕,

在触发触底反弹操作,回到上一层空间函数调用处,以此类推...

直到所有的函数全都释放掉,那么这个递归函数彻底终止.

(3)写递归函数的时候切记要加上一个终止的条件,否则会发生内存溢出,如果层数过多,不推荐使用递归.

'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值