递归法的进制转换

h490516509 2010-10-19 09:39:36





//第一个参数为一个字符串S,用来保存转换后的结果,
//参数N是需要转换的数
//参数B是需转换的进制。
以下为递归法的进制转换函数,但好像有错。。
请问下,下面的函数有错吗?

void convto(char *s,int n,int b)
{
char bit[]={"0123456789ABCDEF"};
int len;
if(n==0)
{
strcpy(s,"");
return;


}
convto(s,n/b,b);
len=strlen(s);
s[len]=bit[n%b];
s[len+1]='\0';

}











...全文
250 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
somebody 2010-10-19
  • 打赏
  • 举报
回复
void convto(char *s,int n,int b)
{
char bit[]={"0123456789ABCDEF"};
int len;
if(n==0)
{
strcpy(s,"");
return;
}
convto(s,n/b,b);
//你这个递归每次到这里就进栈了。当递归到n=0时就跳出了!下面的三句永远都执行不了!
len=strlen(s);
s[len]=bit[n%b];
s[len+1]='\0';
}

somebody 2010-10-19
  • 打赏
  • 举报
回复
void convto(char *s,int n,int b)
{
char bit[]={"0123456789ABCDEF"};
if(n==0)
{
return;
}
else{
*s=bit[n%b];
s++;
convto(s,n/b,b);
}
}
//注意:这个函数运行的结果,指针S中存放的循序是从低位到高位储存的,使用时需要倒序!


somebody 2010-10-19
  • 打赏
  • 举报
回复
语句没错,逻辑错了!
提醒:return;是跳出函数体。
递归出口跟递归过程逻辑不一致

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧