递归与调用栈的学习理解

递归,指的是自己调用自己的函数。且每一个递归函数都有两个条件:一个是基本条件(终止自己调用自己)另一个是递归条件(自己调用自己)。

栈,所有函数调用都进去调用栈,栈有两种基本的操作:压入与弹出。使用调用栈可能很长,将占用大量的内存。

每一个调用栈计算机都将使用一个栈来表示这些内存块,下一个调用栈的内存块都将位于上一内存块的上面。

这有一个需要注意的是:调用另一个函数时,当前函数暂停并处于为完成状况。

当递归函数没完没了的运行时,将会使得递归函数里面调用栈不断的扩大,但程序中可使用的调用栈空间有限。该程序捡回因栈溢出而终止。

递归调用栈,玩一玩。弄一个阶乘递归函数

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

猜你喜欢

转载自blog.csdn.net/weixin_42013825/article/details/87908070