函数的递归调用:

  • 是函数嵌套调用的一种特殊形式
  • 具体是指:
    • 在调用一个函数的过程中又直接或间接地调用到了本身
# 直接调用本身
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函数递归调用的更多相关文章

  1. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

  2. python 函数递归与匿名函数

    1.什么是函数递归? 函数递归调用(是一种特殊的嵌套调用):在调用的函数过程中,又直接或者间接的调用了该函数本身 递归必须要有两个明确的阶段: 递推:一层一层递归调用下去,强调每进入下一层递归问题的规 ...

  3. day14函数递归调用

    day14函数递归调用 1.装饰器叠加 def deco1(func1): def wrapper1(*args,**kwargs): print('=====>wrapper1 ') res1 ...

  4. python 解决递归调用栈溢出

    递归函数 2578次阅读 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact ...

  5. python中递归调用

    递归一个通俗的解释就是,在函数中调用函数本身:伪代码如下: In [31]: def fun(): ....: fun() # 这个递归没有任何作用,只是为了说明什么是递归 递归(Recursion) ...

  6. python 函数的调用 和执行 小知识

    1.符号表 执行一个函数会引入一个用于函数的局部变量的新符号表. 更确切地说, 函数中的所有的赋值都是将值存储在局部符号表: 而变量引用首先查找局部符号表, 然后是上层函数的局部符号表, 然后是全局符 ...

  7. python 函数递归

    ##recursive递归 递归特性:1. 必须有一个明确的结束条件2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通 ...

  8. day15 Python函数递归,轻易不要用递归,容易搞出来内存溢出

    古之欲明明德于天下者,先治其国:欲治其国者,先齐其家:欲齐其家者,先修其身:欲修其身者,先正其心:欲正其心者,先诚其意:欲诚其意者,先致其知,致知在格物.物格而后知至,知至而后意诚,意诚而后心正,心正 ...

  9. python 3 递归调用与二分法

    递归调用与二分法 1.递归调用 递归调用:在调用一个函数的过程中,直接或间接地调用了函数本身. 示例: def age(n): if n == 1: return 18 # 结束条件 return a ...

随机推荐

  1. [LeetCode] 207. 课程表(拓扑排序,BFS)

    题目 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量 ...

  2. Oracle sqlplus中退格键、DEL键、上下左右键无法使用乱码问题

    功能描述:Oracle sqlplus中退格键.DEL键.上下左右键无法使用乱码 1.安装readline-8.0 ①下载readline-8.0.tar.gz文件,百度网盘下载路径: https:/ ...

  3. JS中对获取一个标签的class的方法封一个库

    在JS中我们经常会会用到,获取一个标签的id var aId=document.getElementById("id") 现在虽然有getElementsByClassName这个 ...

  4. Tomcat 第二篇:启动流程

    1 Tomcat 基本知识 首先介绍一些 Tomcat 的基本知识,防止有纯小白看的云里雾里的. 下面这张图是一个下载好二进制版的的 Tomcat ,直接解压得到的,虽然版本是 9.x ,但是这个目录 ...

  5. Docker实战(3):Tomcat部署

    运行环境:centos7,Docker version 1.13.1,docker tomcat version 8.5.50 创建文件(为映射文件做准备,非固定) mkdir -p /tomcat/ ...

  6. 从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Javax,Jakarta

    从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Javax,Jakarta 目录 从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Jav ...

  7. java identityHashCode 和 hashCode

    当类并没有重写Object#hashCode()时, 对于 System.identityHashCode(Object) 和 Object#hashCode() 的结果是一致的; 但对于类似Stri ...

  8. JVM学习(三)JVM垃圾回收

    一.引用的分类 在了解JVM垃圾回收机制之前,了解一下对象的引用类型是非常必要的. 强引用:GC时不会被回收 软引用:描述有用但不是必须的对象,在发生内存溢出异常之前被回收 弱引用:描述有用但不是必须 ...

  9. nginx特性

    nginx特点: 更快,高扩展性,高可靠性,低能耗性,单机支持10w以上的并发连接,热部署,自由的BSD, Apache.Lighttpd.Tomcat.Jetty.IIS,它们都是Web服务器 SN ...

  10. 细嚼JS闭包知识点及案例分析

    闭包是js开发惯用的技巧,什么是闭包? 闭包指的是:能够访问另一个函数作用域的变量的函数.清晰的讲:闭包就是一个函数,这个函数能够访问其他函数的作用域中的变量.默认闭包的this指向windows. ...