Python入门课程NO61课 递归函数
所谓的递归函数,是指自己调用自己的函数。这里的调用不一定是直接调用,也可以是间接地调用。举例说明:
但这样自身不断的调用自身会陷入死循环当中,无法结束,因此python会抛出一个错误,指示该递归函数已超出了最大递归深度。因此
递归函数必须能够正常终止
在设计递归函数时,必须定义一个退出边界,否则函数会不断地递归执行,一旦超出Python语言所支持的递归深度,那么就会抛出RecursionError的错误异常。我们可以在函数体中使用控制语句加一段控制逻辑,当递归函数在条件不满足时就终止递归。我们将上面的递归函数进行修改来输出1-10之间的整数,如下:
递归函数高级用法:返回值
递归函数较非递归函数,会更难理解,在熟练掌握了递归函数的用法以后,可以写出更加简洁的代码。比如计算几个数字的和:
接下来我们进行讲解:
代码最外层是一个三元运算结构:return 0 if not numbers。这段代码表示,如果参数numbers为空,就返回0。
接下来是调用自己else numbers[-1]+qiuhe(numbers[0:len(numbers)-1]),列表numbers非空,那么就先取出列表最后一个元素:numbers[-1]然后对列表进行切片,再将切片后的列表作为参数传递给qiuhe函数:同学们注意这个切片的语法,每次切片都将尾部的元素排除。最后将取出的尾部元素,与递归函数的返回值进行相加:numbers[-1]+accumulate(numbers[0:len(numbers)-1])
递归函数的劣势:
在定义递归函数的时候必须设计函数的边界条件,一旦超出边界,就终止递归,否则递归函数会不断地执行,不断地消耗系统资源,直至被系统kill。
- 上一篇
Python入门课程NO60课 函数装饰器
装饰器是一种软件设计模式,可以对已有的对象进行功能上的扩展,而无需改变其结构。如何使用装饰器来进行功能上的扩展?我们得先学习Python中的闭包函数。闭包函数:简单地理解,就是函数中定义的一个内部函数,该内部函数可以访问外部函数作用域中的参数,变量。使用闭包进行
- 下一篇
Python入门课程NO62课 内置函数之数学运算函数
内置函数是在Python中预先编写好的一些基础函数,可以直接拿来使用,无需再额外编写代码。python官网有所有的内置函数:在本节课中,我们主要讲解一些再实际应用中经常使用的函数。接下来讲解数学运算函数。计算绝对值abs(x): 返回数参数x的绝对值。参数x必须是数值类型或能