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

Haskell实现返回多列表最高平均值的highestAverage函数求助

问题排查
  • 类型不匹配错误:代码中listAverage xs的入参xs类型为[[Int]],但listAverage要求入参为[Int]类型,不符合类型约束,直接导致编译报错。
  • max函数调用格式错误:Haskell标准库的max为柯里化二元函数,正确调用格式为max a b,传入元组(a,b)的写法不符合函数签名要求。
  • 边界条件与递归逻辑错误:仅覆盖了输入为[[]]的场景,未处理空输入、多元素嵌套列表的终止场景,且未实现递归遍历剩余子列表取最高值的逻辑。
正确实现方案

递归实现版本

highestAverage :: [[Int]] -> Double
-- 空输入边界处理
highestAverage [] = 0.0
-- 单元素嵌套列表边界处理
highestAverage [x] = listAverage x
-- 递归逻辑:当前子列表平均值 与 剩余子列表最高平均值 取最大值
highestAverage (x:xs) = max (listAverage x) (highestAverage xs)

高阶函数简洁实现(Haskell惯用写法)

通过map批量计算所有子列表的平均值,再用maximum取最大值即可,代码更简洁易维护:

highestAverage :: [[Int]] -> Double
highestAverage = maximum . map listAverage

两种实现都可通过测试用例验证:highestAverage [[3,1], [5,4,3], [], [5,5,5], [1,2,3]] 输出结果为5.0,符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:24:03