在C中使用递归将十进制数转换为二进制数
Convert decimal number into binary using recursion in C
我有这个代码。代码一切正常。唯一的问题是我不明白为什么我们在最后第二行乘以 10 当函数 convert() 被递归调用时.
#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
你在这里做同样的事情(但数字“假装”为二进制数字)。
我有这个代码。代码一切正常。唯一的问题是我不明白为什么我们在最后第二行乘以 10 当函数 convert() 被递归调用时.
#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
你在这里做同样的事情(但数字“假装”为二进制数字)。