如何使用递归函数将十进制数转换为另一个系统?



我正在用Python写一个函数,它接受一个数字'n'和一个进制'b',它将使用递归函数将十进制数转换为另一个进制。

这是我目前为止写的:

def convert_number(n, b):
if n >= 1:
convert_number(n // b)
print(n % b, end = "")

当我用convert_number(15,3)测试函数时,这是我得到的:

TypeError: convert_number()缺少1个必需的位置参数:'b'

然而,如果我使用b的默认值,该函数可以工作。

因为我是编程新手,我不知道这是什么意思,也不知道要改变什么。提前感谢你的帮助:)

您可能想要return递归调用的结果,并且您需要确保正确调用函数(它需要nb参数)。

通常在递归函数中,首先处理"基本情况"。(输入足够小,不需要递归),然后将输入分为现在可以处理的一部分和需要由另一个(递归)函数调用处理的一部分。

在这个函数中,基本情况是n < b(即它是一个单位数),对于递归情况,我们可以使用divmod来获得下一位数字和需要转换的数字的余数。

>>> def convert_number(n, b):
...     if n < b:
...         return str(n)
...     n, digit = divmod(n, b)
...     return convert_number(n, b) + str(digit)
...
>>> convert_number(10, 2)
'1010'

相关内容

最新更新