我正在尝试编写一些递归python代码,它打印长度为n的每个二进制数。函数的输入应仅为n。这是我目前的代码:
def printAll(n):
result=[]
stringSoFar=''
def printAllrec(stringSoFar,n,result):
if n ==0:
result.append(stringSoFar)
if len(result) == (2):
return result
else:
printAllrec((stringSoFar+"0"),n-1,result)
printAllrec((stringSoFar+"1"),n-1,result)
return printAllrec(stringSoFar,n,result)
print(printAll(2))
但是,此代码始终返回“None”。我不明白为什么它不起作用。任何提示都将不胜感激
使用递归生成器可以使代码更加紧凑。您只需要从n-1中获取每个结果并附加一个“0”和一个“1”
您的代码不需要更多的
return
,它需要返回正确的内容printAllrec
在这里不使用返回值,它只是修改提供给顶级printAllrec
调用的list
,该调用被委托给子调用。但是顶级函数printAll
需要返回list
,而不是从内部递归函数返回的垃圾。只要改变一下:致:
Try it online!
它的工作原理与预期一致
相关问题 更多 >
编程相关推荐