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根据给定文件返回文件名和扩展名的方法
Mar 27 Python
python使用分治法实现求解最大值的方法
May 12 Python
python用模块zlib压缩与解压字符串和文件的方法
Dec 16 Python
python3实现基于用户的协同过滤
May 31 Python
用Python shell简化开发
Aug 08 Python
Python中字典与恒等运算符的用法分析
Aug 22 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
Feb 24 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
Python日志处理模块logging用法解析
May 19 Python
Scrapy模拟登录赶集网的实现代码
Jul 07 Python
基于Python模拟浏览器发送http请求
Nov 06 Python
python之np.argmax()及对axis=0或者1的理解
Jun 02 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
PHP开发的微信现金红包功能示例
2017/06/29 PHP
JavaScript中Math对象使用说明
2008/01/16 Javascript
jQuery 获取对象 定位子对象
2010/05/31 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
关于jquery css的使用介绍
2013/04/18 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
详解js类型判断
2018/05/22 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
[01:03:09]完美世界DOTA2联赛PWL S2 Forest vs SZ 第二场 11.25
2020/11/26 DOTA
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
wxPython中listbox用法实例详解
2015/06/01 Python
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
Python中print和return的作用及区别解析
2019/05/05 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
python实现桌面托盘气泡提示
2019/07/29 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
Java中compareTo和compare的区别
2016/04/12 面试题
培训通知
2015/04/17 职场文书
工程进度款催款函
2015/06/24 职场文书
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript