这里是两个输入的加法代码(就像我们想要Z中的结果,如果X + 1加Y的结果为Z + 1)。
clearInterval(time);
但我想知道我们可以使用类似的代码来处理3个组件,比如
natural_number(0).
natural_number(s(X)) :- natural_number(X).
pl(0,X,X) :- natural_number(X).
pl(s(X),Y,s(Z)) :- pl(X,Y,Z).
提前谢谢你。
答案 0 :(得分:1)
pl(A, B, C, Sum) :-
pl(A, B, Tmp),
pl(Tmp, C, Sum).
或者,如果你想添加一个自然数字列表,你当然可以对其进行折叠:
pl([], 0).
pl([N|Ns], Sum) :-
foldl(pl, Ns, N, Sum).
甚至(在CapelliC的建议之后):
pl(Ns, Sum) :- foldl(pl, Ns, 0, Sum).
PS :使用后继符号并不总是一个坏主意。至少有一个有效用途是使用它来跟踪队列的长度,如this answer所示。