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 相关文章推荐
解决Python2.7读写文件中的中文乱码问题
Apr 12 Python
selenium+python自动化测试之鼠标和键盘事件
Jan 23 Python
Django对models里的objects的使用详解
Aug 17 Python
使用pyqt5 tablewidget 单元格设置正则表达式
Dec 13 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
keras model.fit 解决validation_spilt=num 的问题
Jun 19 Python
Python实现爬取并分析电商评论
Jun 19 Python
python 解决pycharm运行py文件只有unittest选项的问题
Sep 01 Python
通过实例解析Python文件操作实现步骤
Sep 21 Python
如何使用Python自动生成报表并以邮件发送
Oct 15 Python
基于Python的EasyGUI学习实践
May 07 Python
Python实现天气查询软件
Jun 07 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
15个小时----从修改程序到自己些程序
2006/10/09 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
php读取本地json文件的实例
2018/03/07 PHP
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
python生成随机密码或随机字符串的方法
2015/07/03 Python
详解supervisor使用教程
2017/11/21 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
Python3.5运算符操作实例详解
2019/04/25 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
python requests库的使用
2021/01/06 Python
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
联强国际笔试题面试题
2013/07/10 面试题
2014年乡镇植树节活动方案
2014/02/28 职场文书
家长写给老师的建议书
2014/03/13 职场文书
三项教育活动实施方案
2014/03/30 职场文书
大学生个人求职信
2014/06/02 职场文书
学校安全防火方案
2014/06/07 职场文书
自愿解除劳动合同协议书
2014/09/11 职场文书
美容院合作经营协议书
2014/10/10 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
导游词之张家口
2019/12/13 职场文书
比较node.js和Deno
2021/04/27 Javascript
如何有效防止sql注入的方法
2021/05/25 SQL Server
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS
vue+elementui 实现新增和修改共用一个弹框的完整代码
2021/06/08 Vue.js
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android