我想在Prolog中创建一个函数,它将两个列表组合在一起,并返回结果列表。
例如:
?- multiply_lists([1,2,3], [4,5,6], X).
X = [4,10,18].
我想在不使用内置Prolog函数的情况下编写此函数。
答案 0 :(得分:1)
首先定义基本情况 - 将两个空列表相乘的结果是空列表。
multl([],[],[]).
然后,定义函数的递归部分:
multl([H1|Tail1],[H2|Tail2], [H3|Tail3]):-
multl(Tail1, Tail2, Tail3),
H3 is (H1 * H2).
这里发生的事情是两个列表头部的元素相乘并与结果的尾部连接。
总而言之,我们有:
multl([],[],[]).
multl([H1|Tail1],[H2|Tail2], [H3|Tail3]):-
multl(Tail1, Tail2, Tail3),
H3 is (H1 * H2).