List 如何在Prolog中按顺序添加两个列表的每个元素?

List 如何在Prolog中按顺序添加两个列表的每个元素?,list,prolog,List,Prolog,编写一个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([],[],[],[])。来消除额外的错误答

编写一个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([],[],[],[])。
来消除额外的错误答案。@WillNess如果我添加
seqsum([],[],[])。
我会得到两次M=[5,7,9]的答案。我们可以通过简单的剪切来消除错误。谢谢你帮我得到一个更好的答案<代码>seqsum([X],[Y],[Z]):-Z是X+Y无需切割。:)用我写的内容替换你的第一句话。:)
?- seqsum([1,2,3],[4,5,6],Z).
   Z = [5,7,9]
   yes