我正试图用分而治之的方法来逆转比特的顺序。这是我的方法
def reverseBits(n, p, q):
if len(n) <= 1:
return
mid = (p+q)//2
return reverseBits(n[mid+1:q+1], mid, q) + reverseBits(n[p:mid+1], p, mid)下面是我用来调用函数的数据:
n = list(str(10110))
print(reverseBits(n, 0, len(n)-1))但这总是给我带来以下错误:
TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'我怎样才能解决这个问题?
发布于 2022-08-29 14:25:15
在reverseBits(n,p,q)方法中,基条件不返回任何结果,即"None“。基条件应该返回一个具有反向值的列表。
if len(n) <= 1:
return您还会在每个递归调用中发送新的较小的列表,但是中间值根据原始列表的不同而变化。在每个递归调用中发送整个列表将有助于解决这个问题。我还将基条件更改为"p >= q“,以便在左子列表与右子列表重叠时结束递归调用。
def reverseBits(n, p, q):
if p >= q:
return n[p]
mid = (p+q)//2
return reverseBits(n, mid+1, q) + reverseBits(n, p, mid)
n = list(str(10110))
print(reverseBits(n, 0, len(n)-1))https://stackoverflow.com/questions/73529545
复制相似问题