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中的内置函数getattr()介绍及示例
Jul 20 Python
Python使用base64模块进行二进制数据编码详解
Jan 11 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 Python
python爬虫刷访问量 2019 7月
Aug 01 Python
python批量修改ssh密码的实现
Aug 08 Python
python快速排序的实现及运行时间比较
Nov 22 Python
使用pygame写一个古诗词填空通关游戏
Dec 03 Python
Python数据可视化:泊松分布详解
Dec 07 Python
基于python爬取有道翻译过程图解
Mar 31 Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 Python
基于Python和C++实现删除链表的节点
Jul 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
使用php将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
jQuery 白痴级入门教程
2009/11/11 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
python抖音表白程序源代码
2019/04/07 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
生日派对邀请函
2014/01/13 职场文书
入学生会自荐书范文
2014/02/05 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
小学新学期寄语
2014/04/02 职场文书
售后服务承诺书模板
2014/05/21 职场文书
升学宴答谢词
2015/01/05 职场文书
销售内勤岗位职责
2015/02/10 职场文书
民间借贷借条如何写
2015/05/26 职场文书
2015入党自传书范文
2015/06/26 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python