递归与调用栈的学习理解

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

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

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

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

 

 

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

 

 

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

 

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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值