我正在尝试编写一个递归代码,可以将数字转换为任何基本系统。例如,整数 10 转换为二进制将转换为 1010
到目前为止,我已经有了这个,但我的输出之间有“无”。谁能帮我修改我的代码吗?
def convert(a,b):
add = a%b
if a<=1:
return a
else:
print(base(a//b,b), add)
我的想法是 a%b 是要添加到数字末尾的数字,而 a//b 是递归部分,它使用前一个二进制数字的答案,因此基数 2 中的 10 只是转换(5,2)并在末尾添加 0,因为 a//b=5 且 a%b=0 = 1010
您的 else 块中没有 return 语句,并且没有递归调用convert
.
我想你想要:
if a<=1:
return str(a)
else:
return str(convert(a//b,b)) + str(add)
as in
>>> def convert(a,b):
... add = a%b
... if a<=1:
... return str(a)
... else:
... return str(convert(a//b,b)) + str(add)
...
>>> convert(10,2)
'1010'
一般来说,尽量避免在递归函数中混合类型。最常见的情况是,基本情况和递归情况都应返回相同的类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)