如何使用递归函数将十进制数转换为二进制数?

杰科兹

将十进制数转换为二进制数的过程如下:

递归地将十进制数除以 2,每次记下余数(0 或 1)。

  • 当你打到 0 时,把余数倒过来写出答案

例如,要将 710 (base10) 转换为其等效的二进制:

预期输出:

710 / 2 = 355, remainder 0
355 / 2 = 177, remainder 1
177 / 2 = 88, remainder 1
 88 / 2 = 44, remainder 0
 44 / 2 = 22, remainder 0
 22 / 2 = 11, remainder 0
 11 / 2 = 5, remainder 1
 5 / 2 = 2, remainder 1
 2 / 2 = 1, remainder 0
 1 / 2 = 0, remainder 1

710 (base10) = 1011000110 (base2)

将余数放在一起(以相反的顺序)得到 71010 (base10) = 1011000110 (base2)

编写一个递归程序,将十进制数转换为其等效的二进制数。

不起作用的示例代码:

#include <stdio.h>

/*int convertToBinary() {

};

void printBinary() {

}*/

int main() {
    int base10 = 710;
    int base2;
    int remainder;

do {
    printf("%d / 2 = %d, remainder: %d\n", base10, base2, remainder);
    remainder = base10 % 2;
    base10 = base10 / 2;
    base2 = base10;
} while (base10 > 0);

    return 0;
}

错误的输出:

710 / 2 = 32766, remainder: -333235520
355 / 2 = 355, remainder: 0
177 / 2 = 177, remainder: 1
88 / 2 = 88, remainder: 1
44 / 2 = 44, remainder: 0
22 / 2 = 22, remainder: 0
11 / 2 = 11, remainder: 0
5 / 2 = 5, remainder: 1
2 / 2 = 2, remainder: 1
1 / 2 = 1, remainder: 0
  1. 如何更正输出?
  2. 我如何将这些编写为单独的函数?
  3. 如何输出显示“710 (base10) = 1011000110 (base2)”的行?
假设阿格拉瓦尔
  1. 下面是基本实现:

    int toBinary(int x) {
        // base case
        if(x==0 || x==1)
            return x;
        printf("%d", toBinary(x/2));
        return x%2;
    }
    int main(){
        int num=710;
        printf("%d", toBinary(num));
    }
    
  2. 如果您只想打印该行:

    void printBinary(int num) {
        printf("%d (base 10) = ", num);
        int lastBit = toBinary(num);
        printf("%d (base 2)", lastBit);
    }
    

旁注:recursive函数是调用自身的函数。您的示例是一个简单的基于循环的程序,而不是递归程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C程序将十进制数转换为二进制字符串

如何在Swift中将十进制数转换为二进制?

如何将很长的二进制数转换为十进制?

将负二进制数转换为十进制

VHDL:如何将二进制数转换为十进制数

将二进制数向量转换为十进制向量

将十进制数转换为二进制数并更改一个索引

将重复的二进制数转换为十进制

将十进制值转换为二进制,十六进制和八进制的单个函数不会转换为二进制

如何将十进制数转换为二进制数,并将二进制数保存在数组中?

如何使用for循环将二进制转换为十进制?

在Python中将十进制数转换为二进制的简单函数

JavaScript-以字符串形式将十进制数转换为4位二进制数

在Python 3中将十进制数转换为二进制数

将列表整数类型的二进制数转换为十进制数?

将十进制数7710转换为8位二进制补码

如何使用<bitset>库将二进制转换为十进制?

使用递归将二进制数字的字符串转换为十进制数字...

如何在python中使用STACK将十进制数转换为二进制数

添加二进制数而不转换为十进制或使用内置函数

将二进制数数组转换为十进制数

c++ 将十进制数转换为二进制数

使用python中的函数将十进制数转换为二进制数

如何使用二进制补码手动将十六进制转换为十进制

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

在C中将十进制数转换为十亿进制数的二进制数

使用递归将二进制整数转换为十进制整数

在Java中严格使用乘法和除法将二进制转换为十进制数

如何在使用朴素递归将十进制数转换为二进制数时捕获第一个数字?