【发布时间】:2012-08-02 09:13:32
【问题描述】:
这是一个递归程序。但我不明白在这个节目中发生的事件顺序
#include<stdio.h>
count(int);
main()
{
int x=5;
count(x);
}
count(int y)
{
if(y>0)
{
count(--y);
printf("%d ",y);
}
}
输出是:
4 3 2 1 0 ...
但我不明白第一次调用 count(5) 和调用 count(4) 时会发生什么。控件是否立即转到函数的开头?还是首先打印y 的值,然后再次转到函数count() 的开头?
【问题讨论】:
-
尝试使用调试器(在Linux上意味着
gdb在使用gcc -Wall -g编译后),逐步运行程序或至少在count中设置断点 -
你问的是程序是如何执行的?一步一步来??
-
@chris 程序不使用
void main;它使用假定返回int,这是 pre-ISO (K&R) C。 -
是的,我想学习控制序列
-
@ecatmur,我发帖的时候是
void。