如何在Python中使用递归将十进制转换为二进制?


在本文中,我们将向您展示如何在Python中使用递归将十进制转换为二进制。

十进制数是大众最熟悉的数字系统。它是基数为10的系统,只有10个符号——0、1、2、3、4、5、6、7、8和9。而二进制数是数字系统、网络和计算机专业人员最熟悉的数字系统。它是基数为2的系统,只有2个符号:0和1,这些数字分别可以用关和开表示。

当我们将数字从十进制系统转换为二进制系统时,我们使用的是十进制到二进制的转换。数字系统中使用的数字总数决定了所有数字系统的基数。例如,二进制系统基数为二,因为它只使用两位数字来表示一个数字。同样,十进制系统基数为十,因为一个数字由十位数字表示。

使用递归(第一种方法)

算法(步骤)

以下是执行所需任务的算法/步骤:

  • 创建一个递归函数 `getBinaryForm()`(使用 `def` 关键字)来将作为参数传递给它的十进制数转换为二进制形式。

  • 使用 `if` 条件语句检查传递的数字是否使用 `==` 运算符等于 0。

  • 如果条件为真,即传递的十进制数为 0,则返回 0。

  • 否则,使用递归逻辑返回传递给函数的十进制数的二进制形式(使用模运算符 (%) 获取数字的最后一位,将数字除以 2(一半),乘以 10,并使用此值再次调用递归函数)。

  • 创建一个变量来存储输入数字。

  • 通过将输入十进制数作为参数传递来调用 `getBinaryForm()` 函数,并打印函数返回的十进制数的二进制等效值。

示例

以下程序使用递归返回十进制数的二进制形式:

# creating a function to convert decimal number passed to it # as an argument into a binary form def getBinaryForm(decimalnum): # checking whether the number passed is equal to 0 if decimalnum == 0: # returning 0 if the number passed is 0 return 0 else: # Else getting the last bit of the number and dividing the number by 2(half) and multiplying it with 10 # Calling the recursive function again with this value-added return (decimalnum % 2 + 10 * getBinaryForm(int(decimalnum // 2))) # input decimal number decimalnum = 5 print("The binary equivalent of",decimalnum,"is:") # calling the getBinaryForm() function by passing the decimal number as an argument print(getBinaryForm(decimalnum))

输出

执行上述程序将生成以下输出:

The binary equivalent of 5 is:
101

使用递归(第二种方法)

算法(步骤)

以下是执行所需任务的算法/步骤:

  • 创建一个递归函数 `getBinaryForm()`(使用 `def` 关键字)来将作为参数传递给它的十进制数转换为二进制形式。

  • 使用 `if` 条件语句检查传递的数字是否使用 `==` 运算符等于 0。

  • 如果条件为真,即传递的十进制数为 0,则返回 0。

  • 通过传递给定数字的一半来再次递归调用该函数,并将此结果存储在一个变量中。

  • 使用模运算符 (%) 获取给定十进制数的最后一位,并将其添加到上述结果中(乘以10)。

  • 创建一个变量来存储输入数字。

  • 通过将输入十进制数作为参数传递来调用 `getBinaryForm()` 函数,并打印函数返回的十进制数的二进制等效值。

示例

以下程序使用递归返回十进制数的二进制形式:

# creating a function to convert decimal number passed to it # as an argument into a binary form def getBinaryForm(decimalnum): # checking whether the number passed is equal to 0 if decimalnum == 0: # returning 0 if the number passed is 0 return 0 # Call the function recursively again by passing the given number by half result = getBinaryForm(decimalnum // 2) # Getting the last bit and multiply the result with 10 return decimalnum % 2 + 10 * result # input decimal number decimalnum = 500 print("The binary equivalent of",decimalnum,"is:") # calling the getBinaryForm() function by passing # the decimal number as an argument print(getBinaryForm(decimalnum))

输出

执行上述程序将生成以下输出:

The binary equivalent of 500 is:
111110100

结论

在本文中,我们学习了两种使用递归计算给定十进制数的二进制格式的不同方法。我们学习了如何通过传递某个值(结果)来调用递归函数。我们还学习了如何将数字除以二以仅获得整数。

更新于:2022年10月27日

3K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告