0

我正在尝试编写一个简单的谓词来确定列表的所有元素加起来是否为一个总和,但我不明白为什么我的行不通。

看起来它应该可以工作,但是当我执行 list_sum([1,2,3],X) 时它返回 no,或者 list_sum([1,2,3],6) 它也返回 null。有任何想法吗?

list_sum([],0).
list_sum([F], V) :- F=V.
list_sum([F|R], V) :- list_sum(R, V-F).
4

2 回答 2

3
list_sum([],0).
list_sum([V], V).
list_sum([F,G|R], V) :- S is F + G, list_sum([S|R], V).
于 2013-05-30T06:30:13.823 回答
1

必须明确评估算术。尝试

list_sum([], 0).
list_sum([F|R], V) :- list_sum(R, S), V is S+F.
于 2013-05-30T06:27:49.040 回答