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

Python查找缺失最小正整数的递归函数输出异常问题

问题分析与修复

原代码问题

你的递归函数在无序列表中失效,核心原因有两点:

  • 递归调用的结果未赋值回integer,导致上层函数无法获取递归后的正确值,最终返回旧的integer。
  • 遍历整个列表时未及时跳出循环,重复处理元素引发逻辑混乱。

比如输入[1,3,2]时,递归到integer=3后虽然会继续递归到4,但这个结果没有传递回上层,最终返回的是中途的3。

修复方案1:基于原代码修改

调整递归调用的赋值逻辑,找到匹配项后跳出循环:

A = [1, 3, 2]
def solution(A):
    smallestpositiveinteger = recursivesearch(A)
    return smallestpositiveinteger

def recursivesearch(A, integer = 1):
    for number in A:
        if number == integer:
            # 将递归返回值赋值给integer,传递后续结果
            integer = recursivesearch(A, integer + 1)
            # 跳出循环避免重复处理
            break
    return integer

varSolution = solution(A)
print(varSolution)  # 输出4,符合预期

修复方案2:优化逻辑(更高效)

先过滤正整数并去重,利用集合的快速查找特性简化递归逻辑:

A = [1, 3, 2, -1, 0, 3]
def solution(A):
    # 过滤正整数并去重,减少无效检查
    positive_nums = set(filter(lambda x: x > 0, A))
    return recursivesearch(positive_nums)

def recursivesearch(nums, integer = 1):
    if integer not in nums:
        return integer
    # 存在则递归查找下一个正整数
    return recursivesearch(nums, integer + 1)

varSolution = solution(A)
print(varSolution)  # 输出4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:15:35