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

Python能否使用递归实现两个数组对应元素求和并返回结果列表

问题原因及优化方案

核心错误点

  • 变量名不统一:函数形参定义的是counter,但递归逻辑里全程用的是c,运行时会直接触发NameError
  • 返回值结构错误:使用逗号拼接当前计算值和下一层递归结果,Python会自动将逗号分隔的值打包为元组,最终就会得到嵌套元组的结构,而非目标列表

修正后的基础版代码

def add(l1, l2, n, counter):
    if counter >= n:
        return []
    # 把当前求和值放到列表开头,拼接下一层递归返回的列表,保证顺序正确
    return [l1[counter] + l2[counter]] + add(l1, l2, n, counter + 1)

list1 = [7,8,9]
list2 = [10,11,12]
print(add(list1, list2, 3, 0))

运行后输出就是预期的[17, 19, 21]。

更易用的优化版本

可以简化调用逻辑,不需要手动传入列表长度和计数器初始值,同时兼容两个列表长度不一致的场景,取较短列表的长度作为终止计算的边界:

def add(l1, l2, counter=0):
    if counter >= len(l1) or counter >= len(l2):
        return []
    return [l1[counter] + l2[counter]] + add(l1, l2, counter + 1)

list1 = [7,8,9]
list2 = [10,11,12]
print(add(list1, list2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:15:05