C++用递归的方法把一个整数n转换成字符串可以是任意位的整数

#include<iostream>usingnamespacestd;chartran(intnum);intmain(){inta;charresult;cin>>a... #include<iostream>using namespace std;char tran(int num);int main(){ int a; char result; cin>>a; result=tran(a);
return 0;}char tran(int num){ char reply; int i;
if((i=(num/10))>=10) { reply=tran(num/10); } reply=i+'0'; cout<<reply; return 0;}

始终不知道如何利用递归关系,求大神解惑!!!
展开
 我来答
duoloniori
2015-09-05 · TA获得超过456个赞
知道小有建树答主
回答量:181
采纳率:0%
帮助的人:229万
展开全部

我试着写了一个出来,希望对你有帮助,我本身也才刚学C++没多久,不知道代码规不规范。必要的地方加了注释

#include<iostream>
using namespace std;

// 获取数字的位数
int getNumLength(int num)
{
if(num>=10)
{
num/=10;
return 1+getNumLength(num);
}
return 1;
}
const char numChar[]="0123456789";
void tran(int num,char*ch)
{
int length=getNumLength(num);
//用num除以10的length-1次方,获得最高位的数字
//比如123的第一次递归,n=123/10^2=1,第二递归n=23/10^1=2
int n=(int)(num/pow(10,length-1));
if(length>1) // 如果位数大于1,则继续递归
{
*ch=numChar[n];
//将数据源减去10的length-1次方后再进入下次递归
num-=(int)(n*pow(10,length-1));
ch++;//指针自加可以使ch指针指向字符数组的下一个元素
tran(num,ch);
}else
{//如果位碰搭厅数小于或等于1则停止递归,并在末尾加上'\0'
*ch=numChar[n];
ch++;
*ch='\0';
}
}
int main()
{
int a;
cin>>a;
int length=getNumLength(a);
// 预先开辟length+1个字节空间,比如123要开辟4个字节笑隐,最后一个字节是枝悉'\0';
char *result=new char[length+1];
tran(a,result);
cout<<result<<endl;
system("pause");
return 0;
}
kaixingui2012
推荐于2017-05-20 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6251万
展开全部
以下是用递归,正向输出每个数字的方法
void tran(int num);
int main()
{
 盯卖胡   int a;
    cin>>a;
    tran(a);
    return 0;
}

void tran(int num)
{
     if ( 凯拦num > 10 )
        tran( num/10 );
   配早  cout << num%10;
}
如果你想把结果存储到字符串数组中,则上面的代码要改造一下才可以,增加一个字符数组,tran()函数也要增加相应的参数才可以达到效果
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友af3af09
2015-09-05 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:61.9万
展开全部
就是A函数调用A函数,调用它本身!
你这代码我看不明白是干什么!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式