2013-05-30 6 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). 
관련 문제