void pailie( int n)
{
char x;
if(n<=1) //判断n是否小于等于1;
{ x=getchar();//输入最后一个字符;
printf("\n");
putchar(x);//输出最后一个字符
}
else
{ x=getchar();//输入一个字符;
pailie(n-1);//继续调用pailie;(下面的语句没有执行)
putchar(x);//等pailie(n-1)完全执行完后才执行pailie(n)中的这条语句;
}
}
main()
{int i=5;
pailie(i);//开始调用pailie函数
printf("\n");
return 0;
}
main()
{char x;
x=getchar();
putchar(x);
}
//列:
输入:ABCDE 输出:EDCBA;
1:当n=5的时候 输入A,然后就直接调用函数 pailie(n-1),即pailie(4),这时pailie(5)中个putchar(x)还没执行 这是关键的地方
2:当n=4的时候 输入B,然后就直接调用函数 pailie(n-1),即pailie(3),这时pailie(4)中个putchar(x)还没执行
3:当n=3的时候 输入C,然后就直接调用函数 pailie(n-1),即pailie(2),这时pailie(3)中个putchar(x)还没执行
4:当n=2的时候 输入D,然后就直接调用函数 pailie(n-1),即pailie(1),这时pailie(2)中个putchar(x)还没执行
5:当n=1的时候 输入E,这时N=1符合IF条件了就直接输出E;这时pailie(1)就完全执行完了,
然后就倒着往上推就行了 pailie(1)完全执行完了,就可以执行pailie(2)中的putchar(x)了;
pailie(2)完全执行完了,就可以执行pailie(3)中的putchar(x)了;
pailie(3)完全执行完了,就可以执行pailie(4)中的putchar(x)了;
pailie(4)完全执行完了,就可以执行pailie(5)中的putchar(x)了;
最后程序执行完毕;
x=gentchar()X等于第一个字符;
[
本帖最后由 草狼 于 2010-4-15 20:41 编辑 ]