2013-05-30 34 views
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). 

回答

1

必須顯式評估算術。嘗試

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