使用C中的递归将十进制数转换为二进制数



我有这段代码。代码一切正常。唯一的问题是,当函数convert((被递归调用时,我不明白为什么我们在最后一行乘以10。

#include<stdio.h>
int convert(int);
int main()
{
int dec,bin;
printf("n Enter the decimal no.:");
scanf("%d",&dec);
bin=convert(dec);
printf("n The binary equivalent is %d",bin);
return 0;
}
int convert(int dec)
{
if(dec==0)
return 0;
else
return ((dec%2)+10 * convert(dec/2));
}

有人帮我。提前谢谢。

您似乎不明白发生了什么:
假设您正在将数字9转换为二进制数字,那么您应该得到"1001";,你正在使用你的程序。

然而;1001〃;(一零零零一(表示为1001(一千零一(。

哦,也许你不明白,乘以10加上一些东西是在末尾附加一些东西的方法:如果我要求你把数字2附加到数字3,你会做以下操作:

3 * 10 + 2 = 32

你在这里做同样的事情(但数字"假装"是二进制数字(。

最新更新