OCaml 中的递归函数
Recursive function in OCaml
我有这部分代码使用此格式在图中查找下一个节点:
current node->(operator, cost, name of next node) list
:
let opPoss =(function
"A" -> [('h',4,"B");('b',10,"C")]
| "B" -> [('b',2,"C");('h',4,"D")]
| "C" -> [('b',6,"F")]
| "D" -> [('b',2,"C")]
这个找到每个节点的权重:
let hEtat = (function
"A" -> 8
| "B" -> 3
| "C" -> 2
| "D" -> 5
| _ -> 0 );;
我必须实现一个函数,该函数 returns 每个节点的下一个节点列表,格式如下:
(name of node, cost, weight)
,所以我尝试了这个:
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, b, hEtat c)::creer t g opPoss hEtat;;
但它不起作用,它向我展示了这个:
;; Line 4, characters 45-47: Error: Syntax error
如何正确实现递归?
你的语法错误是你有 let rec
没有跟随 in
.
本质上,您定义了一个名为 creer
的局部函数,但您从不使用该定义。
您可以尝试在代码末尾添加类似这样的内容:
in
creer liste g opPoss hEtat
(这很难回答,因为代码的格式不可读。您可以使用自动缩进工具,或手动缩进。)
我有这部分代码使用此格式在图中查找下一个节点:
current node->(operator, cost, name of next node) list
:
let opPoss =(function
"A" -> [('h',4,"B");('b',10,"C")]
| "B" -> [('b',2,"C");('h',4,"D")]
| "C" -> [('b',6,"F")]
| "D" -> [('b',2,"C")]
这个找到每个节点的权重:
let hEtat = (function
"A" -> 8
| "B" -> 3
| "C" -> 2
| "D" -> 5
| _ -> 0 );;
我必须实现一个函数,该函数 returns 每个节点的下一个节点列表,格式如下:
(name of node, cost, weight)
,所以我尝试了这个:
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, b, hEtat c)::creer t g opPoss hEtat;;
但它不起作用,它向我展示了这个:
;; Line 4, characters 45-47: Error: Syntax error
如何正确实现递归?
你的语法错误是你有 let rec
没有跟随 in
.
本质上,您定义了一个名为 creer
的局部函数,但您从不使用该定义。
您可以尝试在代码末尾添加类似这样的内容:
in
creer liste g opPoss hEtat
(这很难回答,因为代码的格式不可读。您可以使用自动缩进工具,或手动缩进。)