如何编写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)
逻辑说明
- 对每个元素判断是否为列表:如果是,递归调用
recursive_min获取该子列表的最小值;如果是数字,直接使用该值 - 将所有元素的有效值(包括子列表的最小值)进行比较,最终得到整个嵌套列表的最小值
内容的提问来源于stack exchange,提问作者Peter Wu
相关产品推荐
相关产品推荐

