2013-05-30 2 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). 
Смежные вопросы