1

我想写一个序言语句来从列表中删除每个偶数顺序元素

输入: [a,b,c,d,e] 输出:[a,c,e]

谁能帮助我如何为此编写序言声明?

4

1 回答 1

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 的其余部分

于 2012-11-29T22:06:26.203 回答