递归调用理解【含有示例代码】

【思路】:把递归想成一颗树,根节点一直往下遍历【先根】,DFS()后面的是从叶子节点开始往上遍历【后跟遍历】 退出循环是先根遍历结束

1 每一级的函数调用都有自己的局部变量.

2 递归函数中,位于递归调用语句后的语句的执行顺序和各个被调用函数的顺序相反.

       即位于递归函数入口前的语句,由外往里执行;
       位于递归函数入口后面的语句,由里往外执行。

3 虽然每一级递归有自己的变量,但是函数代码并不会得到复制.

4 递归函数中必须包含可以终止递归调用的语句.

int region(int a[], int currentSum, int i){
    currentSum += a[i];
    cout << "out  " << currentSum << endl;          //按顺序输出:递归式前面  
    if (i<3){
        region(a, currentSum, i + 1);
        cout << "in  " << currentSum << endl;  //先进后出:递归式后面  
    }
    cout << "hello  " << endl;
    return currentSum;
}

void type(){
    int a[5] = { 1, 2, 3, 4 };
    cout << "final  " << region(a, 0, 0) << endl;
}


int main(){
    type();
    return 0;
}

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值