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 检查文件mime类型的方法
Dec 08 Python
在Pycharm terminal中字体大小设置的方法
Jan 16 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
Sep 25 Python
安装python及pycharm的教程图解
Oct 10 Python
python set集合使用方法解析
Nov 05 Python
Python pandas库中的isnull()详解
Dec 26 Python
tensorflow使用CNN分析mnist手写体数字数据集
Jun 17 Python
Python如何给你的程序做性能测试
Jul 29 Python
python中Array和DataFrame相互转换的实例讲解
Feb 03 Python
Pandas数据分析的一些常用小技巧
Feb 07 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 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类
2006/11/27 PHP
php include,include_once,require,require_once
2008/09/05 PHP
php实现用于删除整个目录的递归函数
2015/03/16 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
python如何通过protobuf实现rpc
2016/03/06 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
python游戏开发的五个案例分享
2020/03/09 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
python链表类中获取元素实例方法
2021/02/23 Python
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
工程力学专业毕业生求职信
2013/10/06 职场文书
化工专业应届生求职信
2013/11/08 职场文书
商务英语广告词大全
2014/03/18 职场文书
党员自评材料范文
2014/12/17 职场文书
2015年领导班子工作总结
2015/05/23 职场文书