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教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
Nov 23 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
Apr 25 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
python获取点击的坐标画图形的方法
Jul 09 Python
Python如何使用turtle库绘制图形
Feb 26 Python
python中for in的用法详解
Apr 17 Python
Python Django form 组件动态从数据库取choices数据实例
May 19 Python
Django返回HTML文件的实现方法
Sep 17 Python
记录一下scrapy中settings的一些配置小结
Sep 28 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
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
php将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
微信支付的开发流程详解
2016/09/13 PHP
php实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
Tesserocr库的正确安装方式
2018/10/19 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
JAVA高级程序员面试题
2013/09/06 面试题
五一家具促销方案
2014/01/10 职场文书
竞聘副主任科员演讲稿
2014/01/11 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
学生保证书范文
2014/04/28 职场文书
优秀教师申报材料
2014/12/16 职场文书
大连导游词
2015/02/12 职场文书
个人年度总结报告
2015/03/09 职场文书
2015年工商所工作总结
2015/05/21 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
Python实现学生管理系统(面向对象版)
2021/06/24 Python