Python实现Decimal转Binary时代码执行无输出问题排查求助
代码错误点
- 第一处:
if ip_val= 1行使用赋值运算符=代替了等于判断运算符==,属于语法错误,正常运行会直接抛出SyntaxError,若你观测到无语法报错,大概率是代码誊写时的笔误。 - 第二处:递归触发逻辑完全错误。当前代码只有输入值等于1时才会触发递归,你传入的24不满足该条件,不会进入递归分支,仅会执行一次
print(24%2, end = '')输出单个0,输出末尾无换行可能会让你误认为没有任何输出。 - 第三处:缺少正确的递归终止边界,就算你修正了判断运算符,当前逻辑也会出现无限递归导致栈溢出,正确的递归触发条件应该是
ip_val > 1,即当值大于1时继续递归拆解高位,小于等于1时停止递归直接输出余数。
修正后可正常运行的代码
def decimalToBinary(ip_val): if ip_val > 1: # 大于1时继续递归拆解高位 decimalToBinary(ip_val // 2) # 从高位到低位依次打印余数 print(ip_val % 2, end = '') # Driver Code if __name__ == '__main__': ip_val = 24 decimalToBinary(ip_val) # 输出结束后添加换行方便观察 print()
运行后将输出24对应的二进制值11000。
内容的提问来源于stack exchange,提问作者Asim Raza
相关产品推荐
相关产品推荐

