首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >利用分而治之的反向位

利用分而治之的反向位
EN

Stack Overflow用户
提问于 2022-08-29 13:26:22
回答 1查看 37关注 0票数 0

我正试图用分而治之的方法来逆转比特的顺序。这是我的方法

代码语言:javascript
复制
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)

下面是我用来调用函数的数据:

代码语言:javascript
复制
n = list(str(10110))
print(reverseBits(n, 0, len(n)-1))

但这总是给我带来以下错误:

代码语言:javascript
复制
TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'

我怎样才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-29 14:25:15

在reverseBits(n,p,q)方法中,基条件不返回任何结果,即"None“。基条件应该返回一个具有反向值的列表。

代码语言:javascript
复制
if len(n) <= 1:
    return

您还会在每个递归调用中发送新的较小的列表,但是中间值根据原始列表的不同而变化。在每个递归调用中发送整个列表将有助于解决这个问题。我还将基条件更改为"p >= q“,以便在左子列表与右子列表重叠时结束递归调用。

代码语言:javascript
复制
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))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73529545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档