ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Python 递归函数 > 原文: [https://thepythonguru.com/python-recursive-functions/](https://thepythonguru.com/python-recursive-functions/) * * * 于 2020 年 1 月 7 日更新 * * * 函数本身调用时称为递归。 递归的工作原理类似于循环,但有时使用递归比循环更有意义。 您可以将任何循环转换为递归。 这是递归的工作方式。 递归函数会自行调用。 如您所料,如果不因某种条件而停止,则此过程将无限期重复。 此条件称为基本条件。 每个递归程序中都必须有一个基本条件,否则它将像无限循环一样永远继续执行。 递归函数的工作原理概述: 1. 递归函数由一些外部代码调用。 2. 如果满足基本条件,则程序执行有意义的操作并退出。 3. 否则,函数将执行一些必需的处理,然后调用自身以继续递归。 这是用于计算阶乘的递归函数的示例。 阶乘由数字表示,后跟(`!`)符号,即`4!`。 例如: ```py 4! = 4 * 3 * 2 * 1 2! = 2 * 1 0! = 1 ``` 这是一个例子 ```py def fact(n):     if n == 0:         return 1     else:         return n * fact(n-1) print(fact(0)) print(fact(5)) ``` **预期输出**: ```py 1 120 ``` ```py def fact(n): if n == 0: return 1 else: return n * fact(n-1) print(fact(0)) print(fact(5)) ``` 现在尝试执行上述函数: ```py print(fact(2000)) ``` 你会得到: ```py RuntimeError: maximum recursion depth exceeded in comparison ``` 发生这种情况是因为默认情况下 python 在`1000`调用之后停止了调用递归函数。 若要更改此行为,您需要按如下所示修改代码。 ```py import sys sys.setrecursionlimit(3000) def fact(n):     if n == 0:         return 1     else:         return n * fact(n-1) print(fact(2000)) ``` ```py import sys sys.setrecursionlimit(3000) def fact(n):     if n == 0:         return 1     else:         return n * fact(n-1) print(fact(2000)) ``` * * * * * *