You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

递归实现十进制转二进制时字符串返回报错求助

问题分析与修复

你的代码报错原因很明确:to_binary函数返回的是字符串类型,但你在else分支里试图将它和整数做算术运算。具体来说:

  • to_binary(int(d // 2))返回的是字符串,10 * 字符串本身就是非法操作
  • 就算上面的操作合法,d % 2是整数,整数和字符串相加也会触发unsupported operand type(s) for +: 'int' and 'str'错误

递归实现十进制转二进制的核心逻辑应该是字符串拼接,而非数值计算——每次递归获取高位的二进制字符串,再把当前位的二进制字符拼在后面。

修复后的代码

def to_binary(d):
    if d == 0:
        return "0"
    # 当d是1时,直接返回"1",避免拼接出多余的前置0
    elif d // 2 == 0:
        return str(d % 2)
    else:
        # 先递归获取高位二进制字符串,再拼接当前位
        return to_binary(d // 2) + str(d % 2)

# 测试示例
nums = 5
result = to_binary(nums)
print("Result: " + result)  # 输出 Result: 101

逻辑说明

  • 当输入为0时,直接返回"0"(处理边界情况)
  • 当输入为1时,直接返回"1"(避免递归到0后拼接出"01")
  • 对于大于1的数,先递归处理d//2(获取高位二进制),再将当前位d%2转成字符串拼接到结果末尾

内容的提问来源于stack exchange,提问作者sandy neo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:15:42