我正在尝试编写一个简单的谓词,它将确定列表中的所有元素是否合计为一个总和,但我不明白为什么我的工作不起作用。
它似乎应该可以工作,但是当我执行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).
答案 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.