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

Python遍历双列表计算达标日最大生产总成本的问题排查

代码错误原因及修正方案

核心错误点

你的代码存在4个问题导致结果不符合预期:

  • 递归返回值未接收:触发递归调用calc时没有将返回值赋值给当前的money变量,递归计算的结果完全没有生效,最终返回的是第一次循环全量累加的成本。
  • 切片范围错误:传给下一轮递归的labels切片为labels[i:],会重复计算当前已处理的第i位元素,正确应为labels[i+1:]。
  • 成本索引错位:嵌套函数calc直接使用外层原始cost列表,每次循环都从cost[0]开始累加,和当前递归轮次的labels切片完全不匹配,导致成本计算完全错位。
  • 未终止当前循环:触发递归后没有跳出当前轮次的循环,会继续遍历当前切片剩余元素,造成重复累加。

优化实现

该需求不需要用递归,单次遍历即可实现,逻辑更简洁不易出错:

def maxCost(cost, labels, dailyCount):
    current_legal = 0
    current_daily_cost = 0
    total_cost = 0
    for c, label in zip(cost, labels):
        current_daily_cost += c
        if label == 'legal':
            current_legal += 1
        # 达到日产量,累计总成本后重置当日计数
        if current_legal == dailyCount:
            total_cost += current_daily_cost
            current_legal = 0
            current_daily_cost = 0
    return total_cost

# 官方示例测试
cost = [1,3,2,5,4,1]
labels = ['legal', 'illegal', 'legal', 'legal', 'legal', 'legal']
dailyCount = 2
print(maxCost(cost, labels, dailyCount)) # 输出15,符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:24:02