编写一个递归函数实现十进制到二进制转换

inti=0,a[50];voidfun(intn,intr){for(;;i++){if(n==0)break;else{a[i]=n%2;returnfun(n/=2... int i=0,a[50];
void fun(int n, int r)
{
for(;;i++)
{if (n==0) break ;
else {a[i]=n%2; return fun(n/=2,r);}}
for(;i>=0;i--)
printf("%d",a[i]);
}
void main()
{
int n,r=2;
scanf("%d",&n);
fun(n,r);
}哪里错了?
展开
 我来答
听不清啊
高粉答主

推荐于2017-09-22 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:2.3亿
展开全部
既然是void函数,它就不应有return XXX

楼主把问题复杂化了。简化后的程序如下:
void fun(int n, int r)
{
if (n==0) return;
else fun(n/2,r);
printf("%d",n%2);
}
void main()
{
int n,r=2;
scanf("%d",&n);
fun(n,r);
printf("\n");
}
追问
感谢你的回答,你的回答很好,不过我还有几个疑问想请教一下,首先 第三行 的return是什么作用,另外可以 简单分享一下你的解题思路吗?
追答
第三行 的return是不需要递归了。

其实还可以简化一点的:
void fun(int n, int r)
{
if (n>1) fun(n/2,r); //大于1时(对应的二进制数多于1位的数)递归
printf("%d",n%2); //返回前输出本次的余数
}
void main()
{
int n,r=2;
scanf("%d",&n);
fun(n,r);
printf("\n");
}
含腹性08
2019-07-15 · TA获得超过675个赞
知道小有建树答主
回答量:365
采纳率:73%
帮助的人:81.3万
展开全部
#include<stdio.h>
用递归法将一个整数转换成字符串。例如,输入483,应输出字符串“483”这两个递归函数狠类似
void convert(int n)
{
int i;
if ((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
}
main()
{
int number;
printf("\nInput an integer:");
scanf("%d",&number);
printf("Output:");
if (number<0)
{
putchar('-');
number=-number;
}
convert(number);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
溱潼Yi
2020-05-19
知道答主
回答量:1
采纳率:0%
帮助的人:716
展开全部
#include<stdio.h>
void fun(int n)
{
if(n) {fun(n/2);printf("%d",n%2);}
}
void main()
{
int a;
scanf("%d",&a);
fun(a);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式