#基线条件和递归条件
#每个递归函数都有两部分:基线条件和递归条件。递归条件指的是函数调用自己,而基线条件则指的是函数不再调用自己,从而避免形成无限循环。
#栈:栈是一种数据结构,它是一种线性数据结构,只能在一端进行插入和删除操作,另一端是栈顶。栈的特点是先进后出,也就是说,最新添加的元素在栈顶,最先删除的元素在栈底。
#调用栈:计算机在内部使用被称为调用栈的栈。调用栈是用来存储函数调用信息的栈。每当一个函数被调用时,系统就将函数的返回地址和参数压入调用栈,当函数返回时,系统从调用栈中弹出返回地址和参数,并将控制权移交给被调用函数。
#用于存储多个函数变量的栈,被称为调用栈。
#递归函数的调用栈:当一个递归函数调用自己时,系统会将函数的返回地址和参数压入调用栈,并将控制权移交给自己。当函数返回时,系统从调用栈中弹出返回地址和参数,并将控制权移交给调用函数。
#递归函数的调用栈的最大深度:递归函数的调用栈的最大深度取决于递归调用的次数。如果递归调用次数过多,则会导致栈溢出。因此,在编写递归函数时,应注意控制递归调用的次数,避免出现栈溢出的情况。
def fact(x):
if x == 1:
return 1
else:
return x * fact(x-1)
print(fact(5)) # 120