我试图找到一个列表的模式,并返回一个模式的元组,以及它在列表中出现的次数。我已经到了可以返回每个数字的列表以及之后它出现的次数的地步,但它也给了我第一次之后的出现次数,
fun counter(_, nil) = 0
| counter(a, x::xs) = if a = x then 1+counter(a, xs)
else counter(a, xs);
fun countList(nil) = []
| countList(x::xs) =
(x, counter(x, x::xs))::countList(xs);
val lst = countList([1,2,1,1,3,4,5,2,1,2,1]);
给我 val lst = [(1,5),(2,3),(1,4),(1,3),(3,1),(4,1),(5,1),(2 ,2),(1,2),(2,1),(1,1)] : (int * int) 列表
这不应该是一个问题,只需遍历每个值,看看第一个值是否相等,然后只给出第一个值,然后只返回最大的值,但我似乎无法弄清楚那部分。我想我只是无法循环遍历列表并与我正在检查的当前值进行比较。