树ocaml中的出现次数

问题描述 投票:0回答:1

这是我的代码

type arbre= Feuille of int | Noeud of arbre*int*arbre;;
let monarbre= Noeud(Noeud(Feuille(1),2,Noeud(Feuille(6),9,Feuille(7))),4,Feuille(8));;

let rec occ n a= let cpt=0 in
    match a with
    Feuille _ -> 0
    |Noeud(g,v,d)-> if v=n then cpt+1
    else if occ n g then cpt+1
    else if occ n d then cpt+1
;;

我想计算这棵树中的出现,但总是有这样的错误消息

文件“ main.ml”,第8行,字符12-19: 错误:此表达式的类型为int,但预期为 类型 布尔 有人可以帮我吗?

ocaml
1个回答
0
投票

您的函数正在计算一个整数值,即na的出现次数。所以这个表达式:

if occ n g then ...

可能不正确。 ifthen之间的表达式必须为布尔类型。您的表达式具有int类型。这就是编译器告诉您的内容。

实际上,在我看来,您对occ n g返回的特定值感兴趣。假设它返回6,我怀疑您想返回的值是6而不是1。

您至少还有一个错误:最终的else必须有一个if部分。在这种情况下,您需要指定函数应具有的值。

© www.soinside.com 2019 - 2024. All rights reserved.