70,023
社区成员




void e(int );
main()
{
int a;
a=3;
e(a);
}
void e(int n)
{
if(n>0)
{
e(--n);
printf("%d", n);
e(--n);
}
}
printf("%d", n);
e(--n);
的作用就是把每个保存在栈帧中的值打印出来,然后把这个值减1(n--),再次利用递归把比它小的值按同样的递归方法打印出来此处e(--n)是纯粹的重复递归,似乎意义不大。这两句其实就是你利用递归需要达成的目的。void e(int , int, char*);
int main()
{
int a;
int count = 0;
a=3;
e(a, count, "fist time");
system("pause");
}
void printFormat(int count)
{
for (int i = 0; i < count; i++)
{
printf("\t");
}
}
void e(int n, int count, char * p)
{
printFormat(count);
printf("%s第%d层入口\n", p, count);
if(n>0)
{
count++;
e(--n, count, "before print");
printFormat(count - 1);
printf("printing第%d层值%d\n", count-1, n);
e(--n, count, "after print");
count--;
}
printFormat(count);
printf("%s第%d层出口\n", p, count);
count--;
}