void convert(int n)
{int i;
if((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
}
该程序的作用是将一个整数输入,再以字符输出各个位数
我想知道是不是先执行完if语句,再执行putchar语句 ,n的值是如何变化的?
----------------解决方案--------------------------------------------------------
这就是一个递归 程序的调用 自己想明白就可以了 没什么
----------------解决方案--------------------------------------------------------
这就是一个递归 程序的调用 自己想明白就可以了 没什么
----------------解决方案--------------------------------------------------------
随便举个例子,123456,这是一个数,执行上面的程序,if语句会执行第一次i是12345,由于n/10不是0所以保留现场继续做convert(n),直到i是1为止,然后在回头解决前面没有执行完的程序。
----------------解决方案--------------------------------------------------------
说说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()).
关于的递归语句的介绍查查书就知道了
----------------解决方案--------------------------------------------------------