解题思路:使用main函数作为递归函数
代码1的错误分析:输出全部为1.
由于全局变量n 存储在静态存储区,main函数压入栈时,n并未入栈。
代码2的正确分析:
引入变量cnt,并存储在静态存储区。n存在堆栈,每次main函数入栈时,局部变量也入栈。
#include <stdio.h>
int n = 100;
int main() {
if (n == 1) {
printf("%-3d", n);
return 0;
}
n--;
main();
printf("%-3d", n);
return 0;
}
#include <stdio.h>
int main() {
static int cnt = 6; // 存在静态存储区
int n = cnt; //n存在栈中
if (n == 1) {
printf("%-3d", n);
return 0;
}
cnt--;
main();
printf("%-3d", n);
return 0;
}