【发布时间】:2019-12-08 15:23:49
【问题描述】:
编写一个 Prolog 谓词 seqadd/3 使得当 X 和 Y 是相同长度的整数列表时 seqadd(X,Y,Z) 成功,并且
Z 是它们的序列和。
【问题讨论】:
编写一个 Prolog 谓词 seqadd/3 使得当 X 和 Y 是相同长度的整数列表时 seqadd(X,Y,Z) 成功,并且
Z 是它们的序列和。
【问题讨论】:
您想将第一个列表的第一个元素添加到第二个列表的第一个元素,依此类推。正确的? 如果是,那么您可以使用下面的这种方法。
seqsum([],[],[]).
seqsum([H|T],[H1|T1],[H2|Z]):- H2 is H+H1 , seqsum(T,T1,Z).
输出
?- seqsum([1,2,3],[4,5,6],Z).
Z = [5,7,9]
yes
希望这对您有所帮助。
【讨论】:
seqsum([], [], []). 以消除额外的错误答案。
seqsum([],[],[]).,我会得到两次 M=[5,7,9] 的答案。
seqsum([X],[Y],[Z]):- Z is X+Y , ! .