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

OCaml实现杨辉三角:获取下一行列表的函数开发求助

OCaml 杨辉三角下一行生成函数实现

基于你现有代码的完善方案

你已经搭建了递归框架,只需要补充相邻元素求和的逻辑,并处理首尾加1的收尾工作:

let rec next_line lst acc =
  match lst with
  | [] -> [1]  (* 空输入对应杨辉三角第一行 *)
  | [_] -> 1 :: List.rev acc @ [1]  (* 处理完所有相邻对,首尾加1得到结果 *)
  | hd :: next :: tl -> next_line (next :: tl) ((hd + next) :: acc)  (* 计算相邻元素和,存入累加器 *)

(* 包装函数,无需手动传入累加器 *)
let get_next_line lst = next_line lst []

逻辑说明

  1. 递归终止条件:
    • 当输入列表为空时,返回杨辉三角的第一行[1]。
    • 当输入列表只剩一个元素时,说明所有相邻元素对已处理完成:反转累加器(因为累加时是从左到右存储,结果为逆序),然后在首尾各添加1,得到完整的下一行。
  2. 递归处理逻辑:
    • 当列表有至少两个元素时,计算前两个元素的和,将结果存入累加器,然后递归处理从第二个元素开始的剩余列表。

测试示例

get_next_line [1];;        (* 输出:[1;1] *)
get_next_line [1;1];;      (* 输出:[1;2;1] *)
get_next_line [1;2;1];;    (* 输出:[1;3;3;1] *)

内容的提问来源于stack exchange,提问作者J.B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:27:19