一.递归定义
如果一个函数再定义中包含自身的引用,那么我们就说这个函数是递归的(或者称该函数为递归函数)。
代码示例:
# -*- coding:utf-8 -*-
def my_recursive():
"""
最简单的递归函数
"""
my_recursive()
在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出[1]。
在Python中,会因为自身设置的保护措施(限定递归的循环次数,该次数可更改)而不断抛出异常,最后抛出一个RecursionError: maximum recursion depth exceeded异常。
>>> def my_recursive():
... my_recursive()
...
>>> my_recursive()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in my_recursive
File "<stdin>", line 2, in my_recursive
File "<stdin>", line 2, in my_recursive
[Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
>>>
二.尾部递归
参考资料
本文介绍了递归的概念,即一个函数在其定义中包含自身引用,可能导致栈溢出的问题。在Python中,由于内置的递归深度限制,过度递归会引发RecursionError。接着,文章探讨了尾部递归,这是递归的一种形式,可减少资源消耗。
786

被折叠的 条评论
为什么被折叠?



