入门:初步理解递归调用

以前遇见递归总会把其想像成一个黑盒子方法,不会尝试去理解它。

先看一段伪代码:

void recurs(argumentlist)
{
    statements1;
    if (test)
        recurs(arguments);
    statements2;
}

如果递归函数调用自己,则被调用的函数也将调用自己,这将无限循环进行下去,除非包含终止调用链的内容, 通常的方法将递归放在if语句中。

如上所示,test最终会为false终止调用。

只要if为true,每个recurs()调用都将执行statements1,然后再调用recurs,而不会执行statements2. 当if为false,当前调用会执行statements2。当前调用结束后,程序控制权将返回给调用它的recurs,而该recurs将会执行其statements2部分,然后结束,然后再将控制权返回给上一层调用,以此类推。

总而言之,如果recurs执行了5次递归调用,则第一个statements1部分,将按照调用顺序执行5次,然后statements2部分将以与函数调用相反的顺序执行5次。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值