Prolog - 在将每个值加倍后,从原始列表中创建元素的新列表?

时间:2017-12-18 23:40:17

标签: list prolog

Example of trace produced. 我正在尝试编写一个谓词listDouble(L1, L2),其中L2中的每个元素都是L1中对应元素的两倍(即,如果L1 = [1,2,3]然后L2 = [2,4,6]),这是我到目前为止的代码:

listDouble([], [L2]).
listDouble([H|T], [L2|_]):-
        L is H * 2,
        listDouble(T, [L]).

然而,它不起作用,我认为我很难理解如何将每个元素的双重添加到L2

1 个答案:

答案 0 :(得分:1)

listDouble([],[]).
listDouble([H|T], [D|L]):-
        D is H * 2,
        listDouble(T,L).