c++高手请进。。递归问题想不通,不知道程序是如何实现的??

函数的意思是把整数转换成字符串输出。intconvert(intnum){intitemp(0);itemp=num/10;if(itemp!=0)convert(ite... 函数的意思是把整数转换成字符串输出。

int convert ( int num )
{
int itemp(0);
itemp = num / 10;

if ( itemp != 0 )
convert(itemp);

putchar(num%10+'0');
return 0;
}

if ( itemp != 0 )
convert(itemp);

putchar(num%10+'0');
这两个句子是怎么实现的哦?? 如果先做IF语句调用convert函数递归。。应该还要做putchar()语句, 假如按照这个思路。。输出最低位,最后的输出结果不是和原来的数相反吗?求指点。。 如果昨晚IF语句后不执行putchar()语句。那应该只会输出最高位吧。。其他的位数都会丢失吧?
展开
 我来答
zhou2214
2013-01-01 · TA获得超过706个赞
知道小有建树答主
回答量:495
采纳率:0%
帮助的人:549万
展开全部
我习惯这样写:
void convert ( int num )
{

if(num==0) // 1
return ;

convert(num/10); //2

putchar(num%10+'0'); //3

}
这样程序流程就很明确了,分三部分,1递归层次控制,2递归接口控制,3每层要做的操作。
每个递归函数都包括这三部分,只不过个人习惯不一样,写法不一样。

再来解释楼主的程序,楼主那个小函数,因为实在调用下一层之后,再做输出操作,所以
到达递归最底层后,再逆向输出(从最高位到最低位),每层递归回来的时候都是要输出的,
所以结果顺序跟位数都是正确的。
楼主可以自己单步调试试一下。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式