鱼C论坛

 找回密码
 立即注册
查看: 1314|回复: 1

[已解决]递归十进制转二进制

[复制链接]
发表于 2020-9-12 23:01:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def binary(dec):
    if dec == 1:
        return 1
    else:
        yushu = dec % 2
        return binary(dec // 2),yushu


dec = int(input('输入需要转为二进制的十进制数'))
result = binary(dec)
print('0b',result)

声明dec = 4

结果:0b ((1, 0), 0),他这里虽然显示了正确的二进制数值,但是它是以一个元组的类型返回的,我不想这样,我想让他是一个字符串的或者int的类型返回
再问一个题外的,请问我这样写间接的修改元组吗
a = (1,2,3)
>>> b = list(a)
>>> b.append(4)
>>> a = tuple(b)
>>> a
(1, 2, 3, 4)
>>>
最佳答案
2020-9-12 23:08:51
你的程序else中的return有很大的问题,每递归一次元组就套一层,当数比较大的时候,那返回值就会让人眼花缭乱了。
帮你改成返回字符串了
def binary(dec):
    result=''
    if dec <= 1:
        return str(dec)
    else:
        yushu = dec % 2
        return binary(dec // 2)+str(yushu)


dec = int(input('输入需要转为二进制的十进制数'))
result = binary(dec)
print('0b'+result)

再问一个题外的,请问我这样写间接的修改元组吗

是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-12 23:08:51 | 显示全部楼层    本楼为最佳答案   
你的程序else中的return有很大的问题,每递归一次元组就套一层,当数比较大的时候,那返回值就会让人眼花缭乱了。
帮你改成返回字符串了
def binary(dec):
    result=''
    if dec <= 1:
        return str(dec)
    else:
        yushu = dec % 2
        return binary(dec // 2)+str(yushu)


dec = int(input('输入需要转为二进制的十进制数'))
result = binary(dec)
print('0b'+result)

再问一个题外的,请问我这样写间接的修改元组吗

是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 16:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表