在 OCAML 中使用模式匹配和递归函数的列表中 0 和 1 的频率


for(int i<0;i<Array.size;i++)
 {
     if(Array[i]==0)
     count0++;
     else if(Array[i]==1)
     count1++;
     else
     System.out.println("not required");
 }

这是 java 中的代码。 对于使用模式匹配和递归函数的列表,如何在 OCAML 中编写?我是OCaml的新手。

对于简单的折叠,您不需要使用显式递归。下面是一个维护计数的函数:

let count (zeroes, ones) = function
| 0 -> (zeroes + 1, ones)
| 1 -> (zeroes, ones + 1)
| _ -> (zeroes, ones)

下面介绍如何将其应用于列表:

let count_list l = List.fold_left count (0, 0) l

(如果这是一个家庭作业问题,你应该在询问SO之前尝试自己解决它。

最新更新