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

如何让我编写的Haskell向量求和代码通过全部测试用例

问题原因

你当前的代码仅对长度为0、1、2的向量列表做了模式匹配,当输入列表长度≥3时,没有匹配的分支,自然无法通过全量测试。

调整方案

你可以通过递归或者折叠函数处理任意长度的向量列表,示例代码如下:

data Vector = V Int Int Int deriving (Show, Eq) -- 新增Eq实例方便测试判等,Show实例方便打印结果

-- 先封装两个向量相加的基础逻辑,复用避免重复代码
addVector :: Vector -> Vector -> Vector
addVector (V x1 x2 x3) (V y1 y2 y3) = V (x1 + y1) (x2 + y2) (x3 + y3)

-- 用foldl折叠整个列表,初始值为零向量,支持任意长度的向量列表求和
vector :: [Vector] -> Vector
vector = foldl addVector (V 0 0 0)

如果你想要自己写递归实现,也可以替换为下面的写法:

vector :: [Vector] -> Vector
vector [] = V 0 0 0
vector (v:vs) = addVector v (vector vs)

验证示例

你可以用下面的用例测试调整后的代码:

  • 空列表输入:vector [] 输出 V 0 0 0
  • 三个向量输入:vector [V 1 2 3, V 4 5 6, V 7 8 9] 输出 V 12 15 18

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:15:09