- 递归指的是调用自己的函数。
- 每个递归函数都有两个条件:基线条件和递归条件。
- 栈有两种操作:压入和弹出。
- 所有函数调用都进入调用栈。
- 调用栈可能很长,这将占用大量的内存。
基线条件和递归条件
每个递归函数都有两部分:基线 条件(base case)和递归条件(recursive case)。
- 递归条件指的是函数调用自己,
- 基线条件指的是函数不再调用自己,从而避免形成无限循环。
递归调用栈
factorial(3)写作3!,其定义如下:
下面是计算阶乘的递归函数。
def factorial(x):
if x == 1:
return 1
else:
return x * fact(x-1)
分析调用栈的工作原理