我正在尝试获取一个 oCaml 函数,该函数将帕斯卡三角形的下一行作为列表给出,例如:
(下一行:int -> 列表 -> int 列表)
让 get_next_line [1;1] 返回 [1;2;1] 等等。
我尝试过这样的事情,但不知道如何继续:
let rec next_line lst acc = match lst with
| [] -> [1]
| hd::tl -> (* need directions here *)
如果我有一个列表
[1; 1]
,我如何到达 [1; 2; 1]
?好吧,想象一下,如果我将 0
添加到列表的开头,然后将 0
添加到列表的末尾,那么我就有两个三元素列表:[0; 1; 1]
和 [1; 1; 0]
。
我可能可以编写一个递归函数,或者在标准库中找到一个递归函数,它将两个列表的相应元素相加,并给我
[1; 2; 1]
。
如果我能做到这一点,那么用
[1; 2; 1]
重复同样的操作就会得到 [0; 1; 2; 1]
和 [1; 2; 1; 0]
,然后是 [1; 3; 3; 1]
。