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

十进制数转二进制代码咨询:递归转换函数运行逻辑求讲解

已完成的代码片段

你目前写的输入校验部分代码翻译成中文后如下:

import math

num_to_convert = int(input("请输入1到100之间的任意整数:"))

while num_to_convert < 1 or num_to_convert > 100:
    num_to_convert = int(input("抱歉,输入不是1到100之间的整数,请重试:"))
else:
    # 后续可替换为转二进制的逻辑
    print("I'm lost!")

补充说明:这里的else是while循环的附属分支,只要循环没有被break强制打断,正常结束时就会执行该分支内的代码,后续你要实现转二进制功能,把else里的打印替换成调用转二进制函数即可。

十进制转二进制代码原理解析

你找到的递归版转二进制代码添加中文注释后如下:

def decimalToBinary(n):
    if n > 1:
        # 做整数除法,丢弃余数
        decimalToBinary(n//2)
    # 打印当前数除以2的余数,输出不换行
    print(n%2, end=' ')

实现原理

该代码完全对应十进制转二进制的标准计算规则:除2取余,逆序排列。递归的调用特性(先执行深层调用,深层结束后才返回上层执行后续代码)天然满足了「逆序排列余数」的要求,不需要额外做序列反转操作。

执行流程示例

我们以调用decimalToBinary(6)为例,完整执行步骤如下:

  • 第一层调用n=6,满足n>1的条件,先调用decimalToBinary(6//2=3),当前层的打印操作暂时挂起
  • 第二层调用n=3,满足n>1的条件,先调用decimalToBinary(3//2=1),当前层的打印操作暂时挂起
  • 第三层调用n=1,不满足n>1的条件,跳过递归调用,直接执行打印:1%2=1,输出1 ,第三层执行结束返回第二层
  • 第二层继续执行挂起的打印操作:3%2=1,输出1 ,第二层执行结束返回第一层
  • 第一层继续执行挂起的打印操作:6%2=0,输出0

最终输出结果为1 1 0 ,正好对应十进制6的二进制值110。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:12:02