递归:子调用,考虑整体性,依次压栈,返回,考虑两端条件,自栈顶依次弹出到到调用处。
先序递归:递归调用前面部分代码是顺序执行的
后序递归:递归调用后面部分代码是逆序执行的
先序递归:递归调用前面部分代码是顺序执行的
后序递归:递归调用后面部分代码是逆序执行的
java中的责任链设计模式就是利用递归设计的。
# include <stdio.h>
void test(int);
void test1(int);
main(){
test(3);
printf("====分割线===");
test1(3);
}
//结果:
//n = 0
//n = 1
//n = 2
//== == 分割线 == = n = 3
//n = 2
//n = 1
void test1(int n){
if (n > 0){
printf("n = %d\n", n);//先序递归:先序部分代码是顺序执行的
test1(--n);
}
}
void test(int n){
if (n > 0){
test(--n);
printf("n = %d\n",n);//后序递归:后续部分代码是逆序执行的
}
}