Python函数递归调用实现原理实例解析


Posted in Python onAugust 11, 2020

函数的递归调用:

是函数嵌套调用的一种特殊形式

具体是指:

在调用一个函数的过程中又直接或间接地调用到了本身

# 直接调用本身
def func():
  print('我是func')
  func()

func()
# 函数会不断的运行永远不会结束,但Python不允许这种情况,会默认限制只能调1000次.

# 间接调用本身
def f1():
  print('我是f1')
  f2()
  
def f2():
  print('我是f1')
  f1()

f1()
# 此时也相当于直接调用本身,f1-->f2-->f1-->f2-->f1。。。同样会不断循环

递归不应该无限的调用下去,必须在满足某种条件下结束递归

# 写一个函数获取0-9
def f1(n):
  if n == 10:
    return
  print(n)
  n += 1
  f1(n)
f1(0)
# 0 1 2 3 4 5 6 7 8 9

递归的两个阶段:

1、回溯:一层一层调用下去

2、递推:满足某种条件,结束递归调用,然后一层一层返回。

递归的应用:

例如打印出一个嵌套多层列表内的所有元素

li = [1,2,[3,4,[5,6,[7,8],9]]]
def func(l):
  for i in l:
    if type(i) is list:
      func(i)
    else:
      print(i)

func(li)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python sys.path详细介绍
Oct 17 Python
python线程锁(thread)学习示例
Dec 04 Python
Python使用xlrd读取Excel格式文件的方法
Mar 10 Python
Python获取邮件地址的方法
Jul 10 Python
Python使用time模块实现指定时间触发器示例
May 18 Python
Python3多线程爬虫实例讲解代码
Jan 05 Python
python编写弹球游戏的实现代码
Mar 12 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
Django使用中间键实现csrf认证详解
Jul 22 Python
Python异常继承关系和自定义异常实现代码实例
Feb 20 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 Python
零基础学python应该从哪里入手
Aug 11 #Python
Python如何测试stdout输出
Aug 10 #Python
Python3 ffmpeg视频转换工具使用方法解析
Aug 10 #Python
常用的10个Python实用小技巧
Aug 10 #Python
推荐值得学习的12款python-web开发框架
Aug 10 #Python
python多线程semaphore实现线程数控制的示例
Aug 10 #Python
如何在python中实现线性回归
Aug 10 #Python
You might like
中国第一家无线电行
2021/03/01 无线电
用 PHP5 轻松解析 XML
2006/12/04 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
网站上面有这种切换效果
2006/06/26 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
JS实现的简单分页功能示例
2018/08/23 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
python不带重复的全排列代码
2013/08/13 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
python发送邮件实例分享
2017/07/28 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
python获取文件真实链接的方法,针对于302返回码
2018/05/14 Python
Python I/O与进程的详细讲解
2019/03/08 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
CSS3自定义滚动条样式的示例代码
2017/08/21 HTML / CSS
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
MySQL面试题
2014/01/12 面试题
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
员工手册董事长致辞
2015/07/29 职场文书
小学课改工作总结
2015/08/13 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书