如何*return*递归代码中的二进制十进制Python

How to *return* Binary of decimal in recursion code Python

学习递归。我能够使用递归将 Python 代码写入 print 二进制数,但无法弄清楚如何 return这个二进制数。当我 return 时,我只得到第一个 mod 值,可能是因为,据我所知,堆栈在它可以 return 时折叠回开头。 (希望这没有错)。如果您不仅能提供获得 return 结果的函数的答案,还能解释它是如何工作的,我将不胜感激。

def 二进制(n):

if n == 0:
    return
else:
   binary (n//2)       
   print (n%2,end="")

二进制(233)

谢谢

阿伦

def binary(n):
    if n == 0:
        return ""
    else:
        i = n % 2
        print(i, end="")
        return binary(n // 2) + str(i)

x = binary(233)
print()  # seperate the print's in binary from this print
print(x)

实际上 return 函数中的某些内容需要将某些内容放入 return 语句中。在这里,对于 binary(n) 的每次调用,我都会 return 将您的操作获得的数字作为一个字符串,以便我可以将它连接在一起并 return 最后。

return一个值,需要用return代替print.

不过也要注意这个:

  • 使用return时需要将二进制数字累加到一个字符串中
  • 基本情况不正确:当 0 是 n 的原始值时,0 不会转换为空字符串(然后您想取回 0)。如果您处于递归调用中,它只应该是一个空字符串。解决这个问题的方法是提前一步停止递归,即当 n < 2.

结果如下:

def binary(n):
    if n < 2:
        return str(n)
    else:
        return binary(n // 2) + str(n % 2)

呼叫为:

print(binary(13))