极客小将

您现在的位置是:首页 » 原创课程 » Python

课程内容

Python入门课程NO61课 递归函数

极客小将2020-08-28-
所谓的递归函数,是指自己调用自己的函数。这里的调用不一定是直接调用,也可以是间接地调用。举例说明:但这样自身不断的调用自身会陷入死循环当中,无法结束,因此python会抛出一个错误,指示该递归函数已超出了最大递归深度。因此递归函数必须能够正常终止在设计递归函数时

所谓的递归函数,是指自己调用自己的函数。这里的调用不一定是直接调用,也可以是间接地调用。举例说明:

但这样自身不断的调用自身会陷入死循环当中,无法结束,因此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。


网友点评

共有5条评论来说两句吧...

在线客服