【发布时间】:2019-10-04 23:16:51
【问题描述】:
我很想写一个程序,从键盘读取整数 n,并使用递归函数打印 n、n-1、... n。下面的代码有效,但我不完全理解为什么或涉及递归函数的步骤。有人可以解释一下吗?
void countingdown(int n){
if (n == 1){
printf("%d\n", n);
return;
}
else {
printf("%d\n", n);
countingdown(n - 1);
return;
}
}
int main(){
int n;
printf("Enter an integer: ");
scanf("%d", &n);
countingdown(n);
printf("\n");
return 0;
}
【问题讨论】:
-
也许这个关于尾递归的答案会有所帮助:stackoverflow.com/a/37010/1212725
-
如果您在调试器中运行程序,它可能会帮助您理解。使用这样的工具,您可以逐步运行程序并检查每一步中所有变量的值。