如果一个函数在函数内部调用函数本身,那么这个函数就是递归函数。例如用递归函数计算阶乘。
>>> def fact(n):
... if n==1 :
... return 1
... return n*fact(n-1)
...
>>> fact(1)
1
>>> fact(7)
5040
>>> fact(999)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in fact
File "<stdin>", line 4, in fact
File "<stdin>", line 4, in fact
[Previous line repeated 994 more times]
File "<stdin>", line 2, in fact
RecursionError: maximum recursion depth exceeded in comparison
tips:
- 递归函数逻辑清晰但过深的调用会导致栈溢出
- 尾递归可以解决栈溢出,但Python标准解释器并没有针对尾递归优化,所以任何递归函数都会导致栈溢出
以上内容摘抄自于廖雪峰的官方网站-Python教程-递归函数