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处理JSON时的值报错及编码报错的两则解决实录
Jun 26 Python
matplotlib在python上绘制3D散点图实例详解
Dec 09 Python
Python使用tkinter库实现文本显示用户输入功能示例
May 30 Python
获取python的list中含有重复值的index方法
Jun 27 Python
Python unittest 简单实现参数化的方法
Nov 30 Python
Python使用修饰器进行异常日志记录操作示例
Mar 19 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
May 05 Python
Python使用Paramiko控制liunx第三方库
May 20 Python
Keras loss函数剖析
Jul 06 Python
Python同时处理多个异常的方法
Jul 28 Python
Python pickle模块常用方法代码实例
Oct 10 Python
pytorch finetuning 自己的图片进行训练操作
Jun 05 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中使用memcache存储session的三种配置方法
2014/04/05 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
Javascript 函数中的参数使用分析
2010/03/27 Javascript
js 处理URL实用技巧
2010/11/23 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python实现代理服务功能实例
2013/11/15 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
python实现猜数游戏
2020/03/27 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
linux面试题参考答案(6)
2016/06/23 面试题
用Python写一个for循环的例子
2016/07/19 面试题
视光学毕业生自荐书范文
2014/02/13 职场文书
《商鞅南门立木》教学反思
2014/02/16 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
十岁生日答谢词
2015/01/05 职场文书
神龙架导游词
2015/02/11 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python
JavaScript 数组去重详解
2021/09/15 Javascript