【发布时间】:2019-04-22 21:53:16
【问题描述】:
我无法弄清楚如何找到一对列表中的整数之和,如下所示:
[[a, 1], [b, 2], [c, 3], [d, 4]]
我尝试过这样的事情,因为它让人想起常规的求和函数:
sum([], 0).
sum([[_,Head]|[_,Tail]], Sum) :-
sum([_,Tail], Sum2),
Sum is Head+Sum2.
调用是:
sum([[a, 1], [b, 2], [c, 3], [d, 4]], Total),
write('Sum = '), write(Total).
但这不起作用。它打印出 false,当它应该打印出总和时,这里应该是 10。
【问题讨论】:
-
sum([[_,Head]|[_,Tail]], Sum)-> 这表示它只匹配一个包含两个项目的列表,没有别的。整个尾部必须是一个名称。这个问题是昨天提出的,这里有一个答案:stackoverflow.com/questions/55776612/…如果答案是你要找的。span> -
回答者是对的:这是一个很好的学习机会。但简单的答案是:当你指的是 Tail 时,你说 [_,Tail]。列表的其余部分不是 2 项称为 _ 和 Tail,而是 3 项,最好统称为 Tail。