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遍历目录中的所有文件的方法
Jul 08 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
Python pycharm 同时加载多个项目的方法
Jan 17 Python
python之生产者消费者模型实现详解
Jul 27 Python
Python数学形态学实例分析
Sep 06 Python
python 成功引入包但无法正常调用的解决
Mar 09 Python
Python类中的装饰器在当前类中的声明与调用详解
Apr 15 Python
Pytorch mask-rcnn 实现细节分享
Jun 24 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
Jan 27 Python
Jupyter notebook 更改文件打开的默认路径操作
May 21 Python
Python torch.flatten()函数案例详解
Aug 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
这部番真是良心,画质好到像风景区,剧情让人跟着小公会热血沸腾
2020/03/10 日漫
生成缩略图
2006/10/09 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
js完美的div拖拽实例代码
2014/01/22 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
详解用JS添加和删除class类名
2019/03/25 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
使用python模拟高斯分布例子
2019/12/09 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
利用python画出AUC曲线的实例
2020/02/28 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
如何使用PHP session
2015/04/21 面试题
请解释一下webService? 如何用.net实现webService
2014/06/09 面试题
中层干部培训方案
2014/06/16 职场文书
文明单位创建材料
2014/12/24 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书
Python一行代码实现自动发邮件功能
2021/05/30 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python