python - 在Python中使用递归将整数转换为base-x系统

标签 python recursion

我正在尝试编写一个递归代码,可以将数字转换为任何基本系统。例如,整数 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/

相关文章:

java - 递归函数和非递归函数返回不同的结果

python - 在python中查看pickle文件中的图像

python - 如何将 'insert' 放入空列表中的非零位置?

python - 如何在 python pygame 中减少掩码碰撞检测的延迟

python - Django 中带有前缀的表单中的关键错误

php - CodeIgniter Helper Functions 可以使用数据库函数吗?

python - 在 Python 中使用 Socrata client.get 从 Soda 数据库查询

algorithm - 钉子接龙递归解决方案

arrays - 多维数组、Vuex 和突变

algorithm - 演示良好使用相互递归的示例