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

递归函数get_list_of_multiples处理空列表参数时索引越界问题的修正求助

解决递归函数处理空列表的索引越界问题

哦,这个问题我太熟悉了——递归处理列表时很容易漏掉空列表这个边界情况!你的代码问题就出在没有把空列表作为递归的终止条件:当传入空列表[]时,len(numbers)等于0,既不满足第一个if len(numbers) > 1的判断,又会直接进入后续的if(numbers[0] % m == 0)语句,而空列表根本没有索引0,自然触发了“列表索引越界”的错误。

修改方案:添加空列表的终止判断

只需要在函数最开头,先判断列表是否为空,如果是空列表直接返回[],就能完美解决这个问题。修改后的完整代码如下:

def get_list_of_multiples(numbers, m):
    # 新增:空列表直接返回空,作为递归终止条件
    if not numbers:
        return []
    if len(numbers) > 1:
        if numbers[0] % m == 0:
            return [numbers[0]] + get_list_of_multiples(numbers[1:], m)
        return get_list_of_multiples(numbers[1:], m)
    if numbers[0] % m == 0:
        return [numbers[0]]
    else:
        return []

为什么这样修改有效?

  • 当传入空列表时,if not numbers会直接触发,返回空列表,彻底避免了后续访问无效索引的操作。
  • 对于非空列表,原来的递归逻辑完全保留,前两个测试用例的正常运行不会受到任何影响。

测试验证

现在运行三个测试用例:

print(get_list_of_multiples([2, 3, 5, 6], 2))  # 输出 [2, 6]
print(get_list_of_multiples([9, 5, 15, 11, 23], 3))  # 输出 [9, 15]
print(get_list_of_multiples([], 2))  # 输出 [],不再报错

所有用例都能正常运行啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:27:36