Python实现十进制转换为二进制(递归实现)

问题:
输入两个整数, 求其和,并将其转换为二进制输出(字符串);
例:
输入:3,4
输出:“111”
Python的递归实现:

def add_binary(a,b):
    input = a + b
    out = binary_0(input)  # 返回输入值的二进制字符串
    # 将返回的字符串翻转
    l = list(out)
    l.reverse()
    result = "".join(l)
    print(result)
    return(a)
def binary_0(input, output=""):
	# 生成二进制字符串
    if (input != 0):
        a = input % 2
        output = output + str(a)
        return binary_0(int(input / 2), output)  # 递归调用
    else:
        return output

# 调用该函数
add_binary(1, 2046)          

输出结果为:

11111111111

Process finished with exit code 0

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下递归函数将进制数转换为二进制数: ``` def decimal_to_binary(n): if n == 0: return '' else: return decimal_to_binary(n // 2) + str(n % 2) ``` 其中,`n` 是要转换的进制数。如果 `n` 等于 0,返回空字符串。否则,将 `n` 除以 2 并向下取整,然后将余数转换为字符串并与递归调用的结果连接起来。 例如,将进制数 13 转换为二进制数: ``` >>> decimal_to_binary(13) '1101' ``` 同样地,可以使用以下递归函数将二进制数转换为进制数: ``` def binary_to_decimal(n): if len(n) == 0: return 0 else: return 2 * binary_to_decimal(n[:-1]) + int(n[-1]) ``` 其中,`n` 是要转换的二进制数。如果 `n` 的长度为 0,返回 0。否则,将 `n` 的前缀部分递归转换为进制数并乘以 2,然后将 `n` 的最后一位转换为整数并加上这个结果。 例如,将二进制数 1101 转换为进制数: ``` >>> binary_to_decimal('1101') 13 ``` ### 回答2: Python是一种常用的编程语言,它广泛应用于数据科学、机器学习、Web开发等领域。Python具有简单易学、表达式简洁、开发效率高等优点,在编写算法时也有诸多便利。本文将介绍如何使用Python递归实现进制与二进制之间的转换。 1. 十进制转二进制 首先我们考虑如何将进制数转换为二进制数。将一个进制数转换为二进制数的方法是,将其不断除以2,并将余数逆序排列,直到商为0。例如,将进制数9转换为二进制数,可以按如下步骤进行: ① 将9除以2,得商4余1; ② 将4除以2,得商2余0; ③ 将2除以2,得商1余0; ④ 将1除以2,得商0余1。 这样,我们就得到了9的二进制表示为1001。在Python中,我们可以使用递归方法来实现该过程。 具体实现如下: def decimalToBinary(n): if n == 0: return '' else: return decimalToBinary(n//2) + str(n%2) 上述代码中,decimalToBinary是实现进制转换二进制的函数,n是要转换的进制数。如果n等于0,返回一个空字符串,否则将n除以2,取余数并转化为字符,然后将商作为新的n继续递归,最终得到一个二进制字符串。 2. 二进制进制 接下来我们考虑如何将二进制数转换为进制数。将一个二进制数转换为进制数的方法是,将其逐位展开,乘以相应的系数,累加得到进制数。例如,将二进制数1011转换为进制数,可以按如下步骤进行: ① 将二进制数逆序排列得到1101; ② 第0位乘以2^0=1,得到1; ③ 第1位乘以2^1=2,得到0; ④ 第2位乘以2^2=4,得到1; ⑤ 第3位乘以2^3=8,得到1; ⑥ 将以上结果累加得到进制数1+0*2+1*4+1*8=13。 在Python中,我们可以使用递归方法来实现该过程。 具体实现如下: def binaryToDecimal(n): if n == '': return 0 else: return 2*binaryToDecimal(n[:-1])+int(n[-1]) 上述代码中,binaryToDecimal是实现二进制转换为进制的函数,n是要转换的二进制数。如果n等于空字符串,返回0,否则将n字符串逆序,取除最后一位以外的部分作为新的n递归,将最后一位转换为int类型并乘以2,再将结果与递归结果相加,最终得到一个进制数。 总结 本文介绍了如何使用Python递归实现进制与二进制之间的转换。递归是一种重要的编程技巧,可以简化代码、增加可读性和可维护性。通过本文的介绍,希望读者能够更深入地理解Python递归原理,使用Python更高效地实现算法和数据结构。 ### 回答3: 在Python中,可以使用递归算法实现进制与二进制之间的转换。递归算法就是把一个大问题逐步细化成为更小的子问题,并在每个子问题中调用自身来求解,直到能解决最小的子问题。具体的实现方法如下: 1. 实现十进制转二进制递归函数 ```python def decimal_to_binary(decimal_num: int) -> str: """ 实现十进制转二进制递归函数 """ if decimal_num == 0: # 程序终止条件 return "0" elif decimal_num == 1: # 程序终止条件 return "1" else: # 递归调用本函数,求解小规模问题 return decimal_to_binary(decimal_num // 2) + str(decimal_num % 2) ``` 上述代码中,函数名为`decimal_to_binary`,接收一个参数`decimal_num`,表示要转换的进制数,返回一个字符串类型的二进制数。在函数体中,我们首先判断程序应该终止的条件——如果进制数为0或1,则其对应的二进制数也分别为0或1。接着,我们调用自身来求解较小规模的问题,即取进制数的整数部分,不断地把它除以2,直到商为0为止,拼接余数即为所求的二进制数。 2. 实现二进制进制的递归函数 ```python def binary_to_decimal(binary_num: str) -> int: """ 实现二进制进制的递归函数 """ if len(binary_num) == 1: # 程序终止条件 return int(binary_num) else: # 递归调用本函数,求解小规模问题 return binary_to_decimal(binary_num[:-1]) * 2 + int(binary_num[-1]) ``` 对于二进制进制,我们也可以采用递归算法。函数名为`binary_to_decimal`,接收一个参数`binary_num`,表示要转换的二进制数,返回一个整数类型的进制数。在函数体中,我们首先判断程序应该终止的条件——如果二进制数的长度为1,则其对应的进制数也为1。接着,我们调用自身来求解较小规模的问题,即取二进制数的前n-1位,不断地把结果乘以2,然后加上最后一位数即可。 递归算法可读性好、易于理解,但在计算机中的运行效率较低。因此,在实际应用中,可以使用循环或者位运算等方法实现二进制进制的转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值