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

Python递归函数统计两列表同索引符合条件元素次数返回值恒为0问题

问题诱因
  • 递归逻辑提前终止:对第一个索引的元素完成比较后,无论结果是大于等于还是小于,都直接调用了return返回当前单次的比较结果,后续递归遍历剩余元素的代码永远不会被执行,函数只能返回第一个位置的比较值,自然无法累计符合条件的总次数。
  • 无递归终止边界:没有处理列表切片为空的退出条件,当递归到列表长度为0时,访问list1[0]会触发IndexError索引越界错误。
  • 语法错误:最后一行print函数缺少闭合右括号,代码无法正常运行。
修复方案

调整逻辑为「当前索引比较结果 + 剩余列表递归统计的结果」,同时补充空列表的递归终止条件,修正后的代码如下:

def compare(list1, list2):
    """统计list1中元素小于list2同索引元素的总次数"""
    # 递归终止:任意列表为空时停止,返回0
    if not list1 or not list2:
        return 0
    # 累计当前结果和后续递归的结果
    current_count = 1 if list1[0] < list2[0] else 0
    return current_count + compare(list1[1:], list2[1:])

print(compare([1,2,3],[2,1,5]))

上述代码运行测试用例compare([1,2,3],[2,1,5])的返回结果为2,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:18:00