F#列表列表的总和

时间:2016-09-13 00:59:06

标签: f#

我创建了自己的数据类型而我正在尝试创建该数据类型中所有数字的总和,这是列表的列表。我不想使用任何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

1 个答案:

答案 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

根据需要。