list - OCaml 中的递归函数
问题描述
我有这部分代码使用这种格式在图中找到下一个节点:
当前节点->(操作员,成本,下一个节点的名称)列表
:
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 );;
我必须实现一个函数,该函数以这种格式返回每个节点的下一个节点列表:
(节点名称、成本、重量)
,所以我尝试了这个:
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;;
但它不起作用,它向我展示了这一点:
;; 第 4 行,字符 45-47:错误:语法错误
如何正确实现递归?
解决方案
您的语法错误是您let rec
没有以下内容in
。
本质上,您定义了一个名为的本地函数,creer
但您从不将定义用于任何事情。
您可以尝试在代码末尾添加类似这样的内容:
in
creer liste g opPoss hEtat
(这很难回答,因为代码的格式不可读。您可以使用自动缩进工具,或手动缩进。)
推荐阅读
- docmosis - docmosis - 重复行(或部分)不包含大文本
- kubernetes - 将长配置文件传递给 Kubernetes
- embedded - 如何在大数据的拆分和缓冲块上计算 CRC32?
- exception - Asp.Net Wep Api - 返回内部服务器错误和异常详细信息
- azure - 是否可以在时间序列洞察力中为用户友好的图表添加描述
- ruby - 无法通过 AWS-SES 和 Sidekiq 发送电子邮件
- locking - 为什么我们不在信号生产者而不是消费者检查条件变量?
- forms - Orbeon:如何显示来自文件系统资源的动态下拉值
- angularjs - AngularJs 组件绑定未在模板中呈现
- python - 要使用 OULAD 数据集,我如何加入或合并它们?