【发布时间】:2024-01-03 17:34:01
【问题描述】:
我正在尝试编写一个规则,该规则可以返回两个列表中每个元素的乘积之和(相同长度)。
这是我现在拥有的:
sum(0, _, []).
sum(Result, [H1|T1], [H2|T2]) :-
sum(Remaining,T1, T2),
Remaining is Result - (H1*H2).
当列表之一未实例化时,它将不起作用。为了实现以下目标,我需要进行哪些更改?
sum([1,2],X,3).
X = [3,0].
谢谢。
【问题讨论】:
-
我认为
X = [1,1]在您的示例中也是正确答案。你想让它产生所有的答案吗?还是您有其他限制?根据示例,我假设您只处理非负整数?你没说。这是作业吗?您可以使用 CLPFD 库吗?这将是处理这个问题的自然方法。 -
@lurker 是的,它应该产生所有带有非负整数输入的答案。它来自作业,因此我不能使用任何库。谢谢。
标签: recursion prolog dot-product