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

Python递归查找列表最大奇数(不使用max/min)及代码问题修复

递归查找列表最大奇数问题修复方案

原代码核心Bug

  • 终止逻辑错误:递归到列表只剩最后一个元素时,没有判断该元素是否为奇数就直接返回,导致全偶数列表会返回最后一个偶数,而非预期的None
  • 未处理空奇数集的返回值:当子列表递归调用返回None(即子列表无奇数)时,原代码直接将当前奇数和None做大小比较,会触发类型错误或逻辑异常
  • 重复递归调用:同一段逻辑里两次调用maxOdd(L[1:]),会导致递归执行次数翻倍,性能损耗严重

修复后代码

def maxOdd(L):
    if not L:
        return None
    # 仅调用一次递归获取子列表的最大奇数
    sub_max = maxOdd(L[1:])
    # 判断当前元素是否为奇数
    if L[0] % 2 == 1:
        # 子列表无奇数时直接返回当前奇数
        if sub_max is None:
            return L[0]
        # 子列表有奇数时返回二者的更大值
        return L[0] if L[0] > sub_max else sub_max
    # 当前元素非奇数,直接返回子列表的计算结果
    else:
        return sub_max

验证结果

使用你提供的测试用例运行,所有断言均可通过,正常输出Testing maxOdd()...Passed!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:09:02