如何*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))
学习递归。我能够使用递归将 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))