递归,指的是自己调用自己的函数。且每一个递归函数都有两个条件:一个是基本条件(终止自己调用自己)另一个是递归条件(自己调用自己)。
栈,所有函数调用都进去调用栈,栈有两种基本的操作:压入与弹出。使用调用栈可能很长,将占用大量的内存。
每一个调用栈计算机都将使用一个栈来表示这些内存块,下一个调用栈的内存块都将位于上一内存块的上面。
这有一个需要注意的是:调用另一个函数时,当前函数暂停并处于为完成状况。
当递归函数没完没了的运行时,将会使得递归函数里面调用栈不断的扩大,但程序中可使用的调用栈空间有限。该程序捡回因栈溢出而终止。
递归调用栈,玩一玩。弄一个阶乘递归函数
def fact(x): #递归调用栈,阶乘函数 if x==1: return 1 else: return x*fact(x-1) #以3为例,3调用fact,3*2调用fact,3*2*1。返回3*2*1