OCaml函数返回最频繁

ohh*_*ohh 2 recursion ocaml list frequency

假设我有一个清单:

[1; 3; 4; 2; 1; 5; 1]

我需要编写一个函数来返回最常出现的数字,在这种情况下输出应该是

int:1

有任何想法吗?这是我到目前为止所做的,但它似乎并没有做任何事情,真的!

让rec r ls =匹配ls

| [] - > 0

| hd :: tl - > if(hd ==(r tl))然后1 + r tl else r tl;

gas*_*che 6

您可以为每个数字构建列表中显示的次数.这可以通过列表的单次遍历来构建.


luk*_*afi 5

对列表进行排序。编写一个尾递归函数,其累加器包含:

  1. 那些小于先前查看的元素或None最初的元素中最常见的元素,
  2. 元素 (1) 的计数,或0最初,
  3. 先前查看的元素,最初是排序列表的头部,
  4. 1最初与先前查看的元素相等的元素计数。

调用传递初始累加器和排序列表尾部的函数。