如何解决OCaml 中的递归函数
我有这部分代码可以使用这种格式在图中找到下一个节点:
当前节点->(operator,cost,name of next node) list
:
let opPoss =(function
"A" -> [('h',4,"B");('b',10,"C")]
| "B" -> [('b',2,"C");('h',"D")]
| "C" -> [('b',6,"F")]
| "D" -> [('b',"C")]
这个找到每个节点的权重:
let hEtat = (function
"A" -> 8
| "B" -> 3
| "C" -> 2
| "D" -> 5
| _ -> 0 );;
我必须实现一个函数,该函数以这种格式返回每个节点的下一个节点列表:
(节点名称、成本、权重)
,所以我试过这个:
let creerLesFils etat g opPoss hEtat=
let liste = opPoss etat in let rec creer liste g opPoss hEtat= match liste with
[]->[]
|(a,b,c)::t->(c,hEtat c)::creer t g opPoss hEtat;;
但它不起作用,它向我展示了这一点:
;;第 4 行,字符 45-47:错误:语法错误
如何正确实现递归?
解决方法
您的语法错误是您的 let rec
没有跟随 in
。
本质上,您定义了一个名为 creer
的局部函数,但您从不将该定义用于任何事情。
您可以尝试在代码末尾添加如下内容:
in
creer liste g opPoss hEtat
(这很难回答,因为代码格式不可读。您可以使用自动缩进工具,或手动缩进。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。