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

如何使用F#的List.fold实现同符号相邻数字求和并补全代码空缺

问题解决说明

你提供的初始模板存在两处需要调整的细节:

  1. elif System.Math.Sign(x) 里的x是累加结果列表,无法直接取符号,需要取列表头部元素(累加器逻辑是把新元素拼在列表头部,头部元素就是上一步处理的最后一个数值)
  2. List.fold 输出的列表是倒序的,最后需要额外反转才能得到正确顺序的结果

空缺代码片段答案

... 处需要填写的内容为:
(List.head x + y) :: List.tail x


完整可运行代码

let sumAdjacentOfSameSign (lst :int list) : int list =
    let f x y = 
        if x.Length = 0 then
            [y]
        elif System.Math.Sign(List.head x) = System.Math.Sign(y) then 
            (List.head x + y) :: List.tail x
        else 
            y :: x
    List.fold f [] lst |> List.rev

调用测试:输入sumAdjacentOfSameSign [5;-2; -6; 7; -2; 2; 14; 2],可直接得到目标结果[5; -8; 7; -2; 18]


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:39:03