我正在尝试编写一个递归代码,可以将数字转换为任何基本系统。例如,整数 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 block 中没有 return 语句,并且没有对 convert
进行递归调用。
我想你想要:
if a<=1:
return str(a)
else:
return str(convert(a//b,b)) + str(add)
如
>>> 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'
一般来说,尽量避免在递归函数中混合类型。最常见的情况是,您的基本情况和递归情况都应返回相同的类型。
关于python - 在Python中使用递归将整数转换为base-x系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2088201/