java用递归将数字转换字符串_用递归的方法将一个整数n转换成字符串

要求:

用递归的方法将一个整数n转换成字符串。例如,输入438,应输出“483”。n的位数不确定,可以是任意的整数。

分析:应该将输入的数中的每个数进行剥离,然后从头到尾将每个数字转化为对应的字符。递归函数Covert需要完成的工作是,当n不是个位数(n/10!=0)的时候,将n/10作为参数进行递归调用函数Covert,然后将数字n的最后一位数字转化为字符串。因为每次的递归调用Covert函数,是发生在将n的最后一个数字转化为字符串的操作之前的,所以会依次将数字n的每个数字转化为字符。

方法一:

#include

using namespace std;

void Convert(int n)

{

char p;

if(n/10 != 0)

{

Convert(n/10);  //通过递归输出

}

p=n%10+48;//将数字转化成对应的字符串 ,并将最后一位数字转化为字符

cout<

}

int   main()

{

int n ;

cout<

cin>>n;

cout<

if(n<0){

n=-n;

cout<

Convert(n);

}else{

Convert(n);

}

cout<

return 0;

}

分析:

首先在main函数中输入一个整数,然后通过Covert函数的递归,将n中每个数字转化为对应的字符,并输出。

核心代码是:

p=n%10+48;这一句,原理是将当前的Covert(n ),中n的最低位进行输出。

方法二:

#include

using namespace std;

char * Covert(int n, char * pointer){

char * p=pointer;

if(n/10!=0){

p=Covert(n/10,p);

}

*p=n%10+'0';//将数字转化为字符

++p;

*p='\0';//为字符最后添加'\0'

return p;

}

int main(){

int n;

char buffer[20];

cout<

cin>>n;

cout<

if(n<0){

n=-n;

Covert(n,buffer);

cout<

}else{

Covert(n,buffer);

cout<

}

return 0;

}貌似这个方法才更加符合题意,这是参照:http://zhidao.baidu.com/question/502758422.html

分析:

1、将数字转化为对应的字符,可以通过n%10+48来实现,也可以通过n%10+'0'来实现,因为‘0’的ASCII码的数值就是48

2、该算法中建立了一个数组buffer用来存放字符串,通过递归调用让数字前往后依次转化为字符,然后通过指针p的自增,将字符串依次存放到数组中,每次p自增之后都赋值‘\0’,当还有新的字符需要转化的时候,就会有新的值覆盖‘\0’,当没有新的数字转化的时候,就最为字符串的结束标志。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值