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

如何编写recursive_min递归函数?求嵌套数字列表最小值

修复嵌套列表递归找最小值的函数

原代码存在几个关键问题,导致无法正确返回嵌套列表的最小值:

  • 递归调用子列表时,没有接收返回的最小值,完全忽略了子列表的结果
  • 直接将列表元素和当前最小值比较,遇到子列表会触发类型错误
  • 用列表存储最小值冗余,且最终返回的是列表而非数字类型

修复后的递归实现

def recursive_min(nestedlist):
    # 初始化当前最小值:第一个元素如果是列表则递归取最小值,否则直接取元素
    current_min = recursive_min(nestedlist[0]) if isinstance(nestedlist[0], list) else nestedlist[0]
    
    for element in nestedlist[1:]:
        # 处理每个元素:列表则递归获取最小值,否则直接取元素
        element_val = recursive_min(element) if isinstance(element, list) else element
        if element_val < current_min:
            current_min = element_val
    return current_min

nestedlist = [3, 5, 3, 5, 2, -5, 0, 5, -22, [3, 1, 5, 3]]
print(recursive_min(nestedlist))  # 输出:-22

更简洁的实现方式

借助Python内置的min函数,结合生成器表达式可以简化代码逻辑:

def recursive_min(nestedlist):
    # 定义辅助函数统一处理元素(列表递归,数字直接返回)
    def get_val(item):
        return recursive_min(item) if isinstance(item, list) else item
    # 生成所有元素的有效值,取最小值
    return min(get_val(item) for item in nestedlist)

逻辑说明

  1. 对每个元素判断是否为列表:如果是,递归调用recursive_min获取该子列表的最小值;如果是数字,直接使用该值
  2. 将所有元素的有效值(包括子列表的最小值)进行比较,最终得到整个嵌套列表的最小值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:05:05