【发布时间】:2015-11-12 12:13:21
【问题描述】:
我有 2 个列表 [x1, x2, ...xn] 和 [y1, y2, ...yn],格式为 {0, 1}^n。
我想为从 1 到 n 的每个 i 生成一个新列表 [a1, a2 ... an] 以便 ai = xi AND yi(即,如果 x1 = y1 = 1 则 a1 = 1 或如果 x1 = 1,y1 = 0,那么 a1 = 0)
如何使用递归实现谓词?
【问题讨论】:
-
如果你展示了一些代码,你对它的期望,它实际上做了什么(例如,尝试运行它并在你的问题中显示结果),它会更容易帮助你。然后,您可以提出一个具体问题,例如“为什么我使用此程序没有得到预期的结果”。另外,继续将通用 [prolog] 标签添加到问题中。
-
这是使用
maplist/3处理的理想选择(查找)。但是由于您可能需要将自己的递归作为作业进行,请考虑以下事项:(1)您需要一个基本情况,即当两个(或其中一个?)列表为空时会发生什么([]) - 所以编写一个谓词来处理基本情况。如果一个或两个列表是[],结果是什么?,那么(2)然后写递归的情况:如果你比较[X|Xs]和[Y|Ys],结果看起来像X和@ 987654333@?递归调用如何处理其余部分?做一点研究。 -
@lurker:你的评论是一个更好的答案......