【思路】:把递归想成一颗树,根节点一直往下遍历【先根】,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;
}