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+Django在windows下的开发环境配置图解
Nov 11 Python
Python基类函数的重载与调用实例分析
Jan 12 Python
python生成器表达式和列表解析
Mar 10 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
Apr 30 Python
解决python报错MemoryError的问题
Jun 26 Python
Django开发中的日志输出的方法
Jul 02 Python
Python异常的检测和处理方法
Oct 26 Python
python循环输出三角形图案的例子
Nov 22 Python
Transpose 数组行列转置的限制方式
Feb 11 Python
屏蔽Django admin界面添加按钮的操作
Mar 11 Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 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
一个图形显示IP的PHP程序代码
2007/10/19 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
Python中super函数用法实例分析
2019/03/18 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
python每天定时运行某程序代码
2019/08/16 Python
python中删除某个元素的方法解析
2019/11/05 Python
python生成大写32位uuid代码
2020/03/03 Python
python异步Web框架sanic的实现
2020/04/27 Python
海滩咖啡馆:Beach Cafe
2018/02/02 全球购物
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
大学生实习证明范本
2014/01/15 职场文书
信息管理应届生求职信
2014/03/07 职场文书
外贸业务员求职信
2014/06/16 职场文书
公司离职证明样本
2014/09/13 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
一文读懂navicat for mysql基础知识
2021/05/31 MySQL