理解递归

递归就是调用函数本身

其实是同名而已,每次调用都会开辟新的内存空间,和A调用B,B调用C,C再调用D过程一样.

D函数执行完毕后,返回到C,C执行D以后的语句,直到C执行完毕,返回到B,B再执行C以后的语句,直到B执行完毕,返回到A,A执行完毕后,整个过程结束.

递归函数也一样,假设递归函数为A,第N个(层)A执行结束后会返回到第N-1个(层)A,N-1个(层)A执行完毕后再返回到第N-2个(层)A,依此类推,直到返回第一个(层)A,整个过程结束.

但如下面这个递归函数,每层A在没结束之前,都会调用下一层A,永无止境:

A()

{

         A();

}

所以递归调用必须放在一个条件里面:

A()

{

         If()

         {

                   A();

  }

Return;

}

这样,直到if中的条件不成立了,最后一层的A执行结束,返回上一层A,然后依次返回.

注意:A返回后,会执行每一层后面的代码,但有些情况.最后一层返回了,就是目的达到了,不需要干别的,直接再返回上一层即可,即每个A()后面直接跟return,如下:

A()

{

         If()

         {

                   A();

                   Return;

}

Return;

}

注意:如果调用递归的语句是最后执行,则不必多加return.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值