当前位置: 代码迷 >> C语言 >> [求助]大家常用的一个语句,但我有点不懂?
  详细解决方案

[求助]大家常用的一个语句,但我有点不懂?

热度:395   发布时间:2007-06-04 23:54:25.0
[求助]大家常用的一个语句,但我有点不懂?
具体是 :
void convert(int n)
{int i;
if((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
}
该程序的作用是将一个整数输入,再以字符输出各个位数
  我想知道是不是先执行完if语句,再执行putchar语句 ,n的值是如何变化的?
搜索更多相关的解决方案: 语句  convert  int  putchar  

----------------解决方案--------------------------------------------------------
这就是一个递归  程序的调用  自己想明白就可以了   没什么
----------------解决方案--------------------------------------------------------
以下是引用夜火在2007-6-5 8:17:06的发言:
这就是一个递归 程序的调用 自己想明白就可以了 没什么


----------------解决方案--------------------------------------------------------
随便举个例子,123456,这是一个数,执行上面的程序,if语句会执行第一次i是12345,由于n/10不是0所以保留现场继续做convert(n),直到i是1为止,然后在回头解决前面没有执行完的程序。

----------------解决方案--------------------------------------------------------

以下是引用yangzhifu在2007-6-5 17:34:10的发言:

说说putchar的用法
----------------解决方案--------------------------------------------------------
说说上面putchar是怎么变化的
----------------解决方案--------------------------------------------------------
程序运行到i==0即n%10为最高位时,第一次执行 putchar(n%10+'0');输出最高位,然后依次回溯到上一层,执行之前未执行的putchar语句,输出之后各位数。
如:main()函数调用convert(123);执行过程如下:
convert(123);
n=123;i=12;
convert(12);
n=12;i=1;
convert(1);
n=1;i=0;putchar(1%10+'0');/输出 ’1‘
putchar(12%10+'0');输出 ’2‘
putchar(123%10+'0');输出’3‘
----------------解决方案--------------------------------------------------------
谢谢哦
----------------解决方案--------------------------------------------------------

这个递归程序的执行了所以符合条件的if语句后,在倒着输出数(执行putchar()).
关于的递归语句的介绍查查书就知道了


----------------解决方案--------------------------------------------------------
  相关解决方案