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

如何用Python递归计算两个列表的点积?现有不完整代码求完善

递归计算列表点积的实现方案

首先你现有代码中的第二个条件判断存在逻辑错误:elif len(L) or len(K) == 0的实际判定逻辑是「只要L的长度不为0,或者K的长度为0」就返回0,完全不符合「任意列表为空就返回0」的要求,需要先修正这个判断。

补全后的完整代码如下:

def dot(L, K):
    # 两个列表长度不一致直接返回0
    if len(L) != len(K):
        return 0.0
    # 任意列表为空返回0
    elif len(L) == 0 or len(K) == 0:
        return 0.0
    else:
        # 递归逻辑:当前首元素相乘 + 剩余子列表的点积结果
        return L[0] * K[0] + dot(L[1:], K[1:])

逻辑说明

  • 所有返回值统一使用浮点数类型,最终输出自然符合要求的浮点数格式
  • 递归的终止条件为两个列表都被切分为空列表,此时返回0.0终止累加
  • 每次递归调用都会将两个列表的第一个元素相乘,再将剩余的子列表传入下一轮递归,累加后得到完整的点积结果

测试验证

调用dot([5, 3], [6, 4])得到的输出为42.0,和给出的示例要求完全一致。其他边界场景测试结果如下:

  • dot([], []) 返回 0.0
  • dot([1, 2], [3]) 返回 0.0
  • dot([2], [3]) 返回 6.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:06:02