【发布时间】:2021-06-22 11:36:09
【问题描述】:
我正在尝试从 list1 创建 list2,但每个成员都应该有 Z 增量。
如果 Z=1 则:
[1,2,3] -> [2,3,4]
addZ(Z,[X | Xs],[Y | Ys]):-
Y is X+Z,
addZ(Z,Xs,Ys).
如果我尝试addZ(1,[1,2,3],X).,我只会得到否定的答案。
【问题讨论】:
-
两个列表都为空时会发生什么?您需要使“基本案例”成功。目前,没有什么可以告诉 Prolog 接受这种情况。
-
@DavidTonhofer 谢谢,我添加了
addZ(_,[],[]).,现在它可以工作了,但它不会停止而不返回。 -
Prolog 顶层打印第一个答案,但不确定是否还有另一个答案,因此您必须输入
;来请求。然而实际上没有第二个答案,所以 Prolog 顶层打印 false。这是预期的,不是问题。您始终可以通过将查询包装到once/1:once(addZ(1,[1,2,3],X))中来要求只输出一个答案。