我想写一个序言语句来从列表中删除每个偶数顺序元素
输入: [a,b,c,d,e]
输出:[a,c,e]
谁能帮助我如何为此编写序言声明?
这是我对您的问题的解决方案。
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 的其余部分