
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()语句。那应该只会输出最高位吧。。其他的位数都会丢失吧? 展开
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()语句。那应该只会输出最高位吧。。其他的位数都会丢失吧? 展开
展开全部
我习惯这样写:
void convert ( int num )
{
if(num==0) // 1
return ;
convert(num/10); //2
putchar(num%10+'0'); //3
}
这样程序流程就很明确了,分三部分,1递归层次控制,2递归接口控制,3每层要做的操作。
每个递归函数都包括这三部分,只不过个人习惯不一样,写法不一样。
再来解释楼主的程序,楼主那个小函数,因为实在调用下一层之后,再做输出操作,所以
到达递归最底层后,再逆向输出(从最高位到最低位),每层递归回来的时候都是要输出的,
所以结果顺序跟位数都是正确的。
楼主可以自己单步调试试一下。
void convert ( int num )
{
if(num==0) // 1
return ;
convert(num/10); //2
putchar(num%10+'0'); //3
}
这样程序流程就很明确了,分三部分,1递归层次控制,2递归接口控制,3每层要做的操作。
每个递归函数都包括这三部分,只不过个人习惯不一样,写法不一样。
再来解释楼主的程序,楼主那个小函数,因为实在调用下一层之后,再做输出操作,所以
到达递归最底层后,再逆向输出(从最高位到最低位),每层递归回来的时候都是要输出的,
所以结果顺序跟位数都是正确的。
楼主可以自己单步调试试一下。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询