我正在编写一个带有参数“n”的函数,该函数将使用递归公式将十进制数转换为二进制数。
这是我所拥有的非递归函数,但我需要弄清楚如何递归地编写它。
def dec2bin(n):
bStr = ''
if n < 0:
return 'Must be a positive integer'
elif n == 0:
return '0'
else:
bStr += str(n%2)
return bStr
请您参考如下方法:
考虑您的基本情况。对于哪些输入,将答案直接写入您的程序才有意义? 0? 1?可能仅此而已;您不希望巨大的 elif 链上升到“好吧,如果它是 314,我们可以返回 '100111010'”。想一想您需要对多少数字的答案进行硬编码,作为递归的一种基础,以及您可以并且应该让算法处理哪些数字。
想想你的递归调用。如果您想生成 n 的二进制表示,对 dec2bin 的调用会为您提供大部分答案,因此您可以稍微修改一下结果并返回它?那么,如果 n 大于 1,则 n 的二进制表示就是 n//2 的二进制表示> 另一个数字放在末尾,就像 n 的十进制表示是 n//10 的十进制表示,最后还有另一个数字。
