Prolog拆分列表

迈克尔·迈纳(Michael Miner)

我需要split/4在Prolog中创建一个函数,并且我很确定我已经关闭,但是有一个我看不到的错误。该程序将获取一个列表,一个键以及两个用于输出的列表(小和大)。如果列表中的元素小于键,则将其放小,否则将其放大。

因此,我现在拥有的是:

split([H|T], Key, [H|ST], Big) :- H < Key, split(T, Key, ST, Big).
split([H|T], Key, Small, [H|BT]) :- H >= Key, split(T, Key, Small, BT).

我可以假定列表和键都已实例化。如果有人指出我的错误,那就太好了!我想了解我做错了什么。

史蒂文

您唯一缺少的是基本情况。当前,当输入列表为空时,您的谓词无法执行任何操作,在处理完列表中的所有项目之后,任何输入最终都会发生这种情况。

split([], _, [], []).

只需添加此规则,它就会按预期工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章