Я пытаюсь использовать Пролог, чтобы найти сумму пути, используя рекурсию. Мне нужно передать список узлов графа, а затем вернуть сумму их весов.Рекурсивно найти сумму в прологе
Это то, что я пробовал, но не уверен, что я на правильном пути.
connect(a,b,5).
connect(b,c,8).
connect(a,d,10).
connect(d,e,6).
connect(d,f,11).
connect(d,g,4).
connect(b,d,2).
connect(b,e,9).
connect(c,d,4).
connect(c,f,5).
connect(e,g,2).
connect(f,g,1).
list_sum([], 0).
list_sum([Head | Tail], TotalSum) :-
list_sum(connect(Head,Tail,X), Sum1),
TotalSum is Head + Sum1.
Пример Цель:
list_sum([a,b,c],Sum).
Sum = 13
Ваш следующий вопрос предполагает, что вы ответили на этот вопрос самостоятельно. Вы можете либо удалить этот вопрос, либо добавить свой ответ на него. –
Это тесно связано с этим вопросом: [Как суммировать несколько результатов из предиката в Prolog] (http://stackoverflow.com/questions/35867950/how-to-sum-multiple-results-from-a-predicate-in -prolog). – lurker