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实现SMTP邮件发送功能
Jun 16 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
python 正确保留多位小数的实例
Jul 16 Python
Python设计模式之命令模式原理与用法实例分析
Jan 11 Python
python从入门到精通 windows安装python图文教程
May 18 Python
python async with和async for的使用
Jun 20 Python
python list多级排序知识点总结
Oct 23 Python
python flask搭建web应用教程
Nov 19 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
Python调用Windows API函数编写录音机和音乐播放器功能
Jan 05 Python
基于Django signals 信号作用及用法详解
Mar 28 Python
Python 实现RSA加解密文本文件
Dec 30 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和ACCESS写聊天室(三)
2006/10/09 PHP
PHP5 面向对象(学习记录)
2009/12/02 PHP
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
PHP 8新特性简介
2020/08/18 PHP
[JS]点出统计器
2020/10/11 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
javascript深入理解js闭包
2010/07/03 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
2019/05/22 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
Python Nose框架编写测试用例方法
2017/10/26 Python
Python使用random.shuffle()打乱列表顺序的方法
2018/11/08 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
python验证身份证信息实例代码
2019/05/06 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
爱情寄语大全
2014/04/09 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
担保书范本
2015/01/20 职场文书
运动员加油词
2015/07/18 职场文书
小学生节约用水倡议书
2019/08/12 职场文书
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL