我想写一个prolog语句来从列表中删除每个偶数订单元素
输入:[a,b,c,d,e]
输出:[a,c,e]
任何人都可以帮助我,我怎么能写这个prolog声明?
答案 0 :(得分:2)
这是我解决问题的方法。
remove_even_order([],[]). %this line says if I somehow get to an empty list the result I should return is an empty list
remove_even_order([Head_ODD|[]],[Head_ODD]).
remove_even_order([Head_ODD,Head_EVEN|Tail],[Head_ODD|RezultTail]) :- remove_even_order(Tail,RezultTail).
这个问题很简单,但是如果你想要我,我会为你评论每一行。
以下是您要求的评论:
第一行: 这句话说如果我以某种方式进入一个空列表,我应该返回的结果是一个空列表
第二行:这里我们说如果一个列表只包含一个元素(Head_ODD),那么结果列表应仅由该头部组成
第三行:如果我们的列表在结果列表中有2个或更多元素(Head_ODD,HEAD_EVEN + Tail),我应该只放置HEAD_ODD,并尝试递归地解决其余的Tail < / p>