You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:我编写的递归二分搜索算法为何返回None?

递归二分搜索返回None的问题解决方法

你的代码核心问题是递归调用时没有返回结果:当目标元素在左半区或右半区时,你调用了recursionSearch但没有用return把递归得到的结果传递回去,函数执行完这些分支后没有返回值,Python就会默认返回None。

修正后的代码如下:

def recursionSearch(target, numlist):
    if len(numlist) == 0:
        return -1
    mid = len(numlist)//2
    if numlist[mid] == target:
        return mid
    elif target < numlist[mid]:
        return recursionSearch(target, numlist[:mid])  # 加上return传递递归结果
    else:
        return recursionSearch(target, numlist[mid+1:])  # 加上return传递递归结果

需要注意的是,上面的代码返回的是当前子列表中的索引,而非原列表的原始索引。如果需要返回原列表的索引,你需要额外传递当前子列表在原列表中的偏移量,示例如下:

def recursionSearch(target, numlist, offset=0):
    if len(numlist) == 0:
        return -1
    mid = len(numlist)//2
    if numlist[mid] == target:
        return offset + mid
    elif target < numlist[mid]:
        return recursionSearch(target, numlist[:mid], offset)
    else:
        return recursionSearch(target, numlist[mid+1:], offset + mid + 1)

内容的提问来源于stack exchange,提问作者Johnny96

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:35:20