博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归定义
阅读量:4613 次
发布时间:2019-06-09

本文共 1112 字,大约阅读时间需要 3 分钟。

# ### 递归函数 : 自己调用自己的函数'''递:去归:回有去有回是递归'''# (1) 最简单的递归函数def digui(n):	print(n)	if n>0:		digui(n-1)	print(n)digui(5)'''代码解析:去的过程:n = 5print(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)写递归函数的时候切记要加上一个终止的条件,否则会发生内存溢出,如果层数过多,不推荐使用递归.'''

  

转载于:https://www.cnblogs.com/huangjiangyong/p/10906550.html

你可能感兴趣的文章
/proc/uptime详解
查看>>
如何建立合适的索引?
查看>>
acwing 651. 逛画展
查看>>
Vijos P1243 生产产品 (单调队列优化DP)
查看>>
iOS常用第三方库 -转
查看>>
Android布局学习
查看>>
jQuery中事件绑定与解绑
查看>>
js原生Ajax的封装与使用
查看>>
周总结6
查看>>
PostgreSQL 务实应用(二/5)插入冲突
查看>>
一种公众号回复关键词机制
查看>>
java多线程入门学习(一)
查看>>
基于 Web 的 Go 语言 IDE - Wide 1.1.0 公布!
查看>>
nyist oj 138 找球号(二)(hash 表+位运算)
查看>>
Movidius软件手册阅读 2017-09-04
查看>>
ytu 1910:字符统计(水题)
查看>>
201671030110 姜佳宇 实验三作业互评与改进
查看>>
mysql-5.6.15 开启二进制文件
查看>>
python的沙盒环境--virtualenv
查看>>
软件自动化测试——入门、进阶与实战
查看>>