我创建了自己的数据类型而我正在尝试创建该数据类型中所有数字的总和,这是列表的列表。我不想使用任何F#库
我的数据类型
type elist = A | L of int * elist
我是F#的初学者,并试图抓住我的头脑。我想递归地做这件事。我的想法是遍历到列表的末尾并开始一个总和并返回到前面并添加每个。
示例:
let l = L(4, L(3, L(6, L(3, A))))
应返回
val it : int 16
这是我的代码,我知道这是错的:
let rec sum l =
let a = 0
match l with
| A -> 0
| L(head,A) -> head
| L(head,tail) -> sum tail + a
答案 0 :(得分:3)
你快到了。您所需要的就是失去a
:
let rec sum l =
match l with
| A -> 0
| L(head,A) -> head
| L(head,tail) -> head + sum tail
然后在sum l
给出
l = L(4, L(3, L(6, L(3, A))))
val it : int = 16
根据需要。