检查列表的总和是否是prolog中的值

时间:2013-05-30 06:17:56

标签: prolog

我正在尝试编写一个简单的谓词,它将确定列表中的所有元素是否合计为一个总和,但我不明白为什么我的工作不起作用。

它似乎应该可以工作,但是当我执行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).

2 个答案:

答案 0 :(得分:3)

list_sum([],0).
list_sum([V], V).
list_sum([F,G|R], V) :- S is F + G, list_sum([S|R], V).

答案 1 :(得分:1)

必须明确评估算术。尝试

list_sum([], 0).
list_sum([F|R], V) :- list_sum(R, S), V is S+F.