如何在数组中插入元素

时间:2016-10-18 21:41:39

标签: list prolog

我的下一个实验室有这个任务:

“编写一个谓词,在列表中的每个偶数元素之后添加值1.”

我认为我需要递归函数。这就是我在想的事情

addE([],_,[_]).
addE([H|T], _,[H|TR]):-addE(T,_,TR).

addOneEven([],[]).
addOneEven([H|T],[H|TR]):-
    H mod 2 =:= 0, addE([H|H], 1, [H|TR]),
    addOneEven(T,TR).

它一直让我失意。

我想说明我是prolog语言的新手。 谢谢!

1 个答案:

答案 0 :(得分:1)

你可以写一下:

addOneEven([],[]).
addOneEven([H|T],[H|T1]):-
     H mod 2 =:= 1,
     addOneEven(T,T1).
 addOneEven([H|T],[H1|TR]):- 
     H mod 2 =:= 0,H1 is H+1,
     addOneEven(T,TR).

你的addE谓词并不是非常有用,因为它只遍历列表而不向任何元素添加任何内容,另一个问题是你必须有一个H mod 2 =:= 1的情况的子句。