【发布时间】:2021-04-08 00:20:48
【问题描述】:
我有一个需要帮助的 Ocaml 问题,因为我真的无法弄清楚。我对编码并不陌生,但 Ocaml 让我重新考虑我的职业/学术选择。
编写一个从列表中删除所有其他元素的函数。 ['d'; 'o'; '你'; 'C'; 'H'; 'e'; 'C'; '一个'; 'n'; 'o'; 'e'] -> ['d'; '你'; 'H'; 'C'; 'n'; 'e']
必须是递归方法,只能用List.hd、List.tl、List.length,其他都不行。
这是一个删除列表最后一个元素的函数示例:显然应该以类似方式完成:
let rec rm_last_element l =
if List.tl l = []
then []
else List.hd l :: remove_last(List.tl l);;
善良的灵魂可以帮助我解决问题吗?不一定是代码,但只是向我解释清楚你会怎么做?我知道正确的做法是给我提示,让我自己解决,但到目前为止,这已被证明是徒劳的。
非常感谢
【问题讨论】:
-
你有没有尝试过做任何事情?你连问题的一部分都解决不了吗?就像从列表中删除单个元素一样?还是打印所有其他元素?
-
我试过了。显然解决方案非常简单,但我就是看不到它。这是我必须做的最后一个 ocaml 问题也无济于事,然后我可以继续前进并忘记这种语言甚至存在。我正在考虑编写一个删除第一个元素的函数,并根据列表的长度是奇数还是偶数来删除它?但我连那个都做不到
-
我不确定鄙视这种语言来寻求帮助是正确的选择 ;-) 尝试展示你的一些工作,即使是伪代码,我们会帮助你.
标签: ocaml