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写的图片蜘蛛人代码
Aug 27 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
基于Python闭包及其作用域详解
Aug 28 Python
python决策树之CART分类回归树详解
Dec 20 Python
使用Python设计一个代码统计工具
Apr 04 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 Python
Python GUI布局尺寸适配方法
Oct 11 Python
Flask之请求钩子的实现
Dec 23 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
解决Python发送Http请求时,中文乱码的问题
Apr 30 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 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+MySQL 制作简单的留言本
2009/11/02 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
Yii配置文件用法详解
2014/12/04 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
js loading加载效果实现代码
2009/11/24 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
Javascript中Event属性搜集整理
2013/09/17 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
JavaScript和jQuery制作光棒效果
2017/02/24 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
python调用cmd命令行制作刷博器
2014/01/13 Python
Python pandas常用函数详解
2018/02/07 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
python 写一个水果忍者游戏
2021/01/13 Python
一份全面的PHP面试问题考卷
2012/07/15 面试题
硕士研究生个人求职信
2013/12/04 职场文书
岳父生日宴会答谢词
2014/01/13 职场文书
计算机专业职业生涯规划范文
2014/01/19 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
英语分层教学实施方案
2014/06/15 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
企业培训简报范文
2015/07/20 职场文书