使用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

您在这里做的是相同的事情(但数字“假装”为二进制数字)。