#include <stdio.h>
void bar(int n){
if(n == 1){
printf("1\n");
return; // 递归基
}
bar(n - 1); // 递归调用 (向下/压栈)
printf("%d\n", n); // 回溯阶段 (向上/出栈)
}
int main(void){
bar(3);
return 0;
}调用阶段(压栈) 回溯阶段(出栈)
bar(3)
-> n==1? 否
-> 调 bar(2)
bar(2)
-> n==1? 否
-> 调 bar(1)
bar(1)
-> n==1? 是 -> 打印 1 -> return
<- 回到 bar(2) 继续 -> 打印 2 -> return
<- 回到 bar(3) 继续 -> 打印 3 -> return
结束
输出顺序: 1 2 3