C++ 用递归法将一个整数N转换成字符串,

来源:百度知道 编辑:UC知道 时间:2024/06/06 07:25:02
例如输入483,应输出字符串"483".N的位数不确定,可以是任意位数的整数。

请帮我讲解下下面的函数体的作用!!
比如我输入483,程序会按照什么顺序一步步执行下去???

void convert(int n)
{int i;
char c;
if ((i=n/10)!=0)
convert(i);
c=n%10+'0';
cout<<" "<<c;
}
好的回答可以加分。。谢谢大家了~~~~~~~~!
再问下啊!!这个题目对于实际应用有什么意义???
还是仅仅是一道 巩固知识点的 题目??
谢谢大家~~~~~~~~~~!!!!

convert(483)
{
i=483/10=48
convert(48)
{
i=48/10=4
convert(4)
{
i=4/10=0 //停止迭代
c=4%10+'0'='4'
cout<<" "<<'4'
}
c=48%10+'0'='8'
cout<<" "<<'8'
}
c=483%10+'0'='3'
cout<<" "<<'3'
}

第三次看这个程序才完全看懂,你这个程序挺好,挺巧妙的,呵呵
我也是个初学者,我认为这些最最基本的小程序虽然没有很实际的工程意义,但能够拓展我们的思维,让我们体会c程序的框架应该怎样来构建。虽然将来我们会大量的用到一些现成的库函数,但是如何能用得巧,用最少的代码来达到最大的效果,这种能力就是靠多写这样的小程序来慢慢提高的。

先执行递归!i=48然后i=4然后i=0执行输出语句n=4,c=4;输出4,退回上一层i=4,n=48,c=8 输出8;然后再返回上一层i=48,n=483,c=3输出3
及程序输出结果顺序为: 4 8 3

convert函数的递归调用过程:

当输入483时,将实参483传递给形参n
将483除10(结果为48)赋给i,并执行if语句,调用函数,将此时的i值作为实参传递给形参n(内存中将分配一个区域存储它),然后执行函数
……
直至if语句不执行,即i=n/10=0时,c='4',并被输出
然后返回上一层调用,这时的i为48,c=‘8’,并被输出
最后返回顶层,c=‘3’,输出