理解递归

来源:互联网 发布:中国好声音网络歌手 编辑:程序博客网 时间:2024/04/24 06:26

递归就是调用函数本身

其实是同名而已,每次调用都会开辟新的内存空间,和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
原创粉丝点击