рекурсивная сумма с использованием пролога - PullRequest
0 голосов
/ 16 июня 2020

У меня вопрос о том, как я могу рекурсивно суммировать с помощью пролога, я пытался это сделать, но он не учитывает первый элемент, который я имею в виду, например, если выбрать расстояние между cdmx и nuevoleon, он суммирует только 6 и 7, но 3 и 5 они теряются, кто-нибудь знает, как я могу рекурсивно суммировать расстояние? большое спасибо: D

distance(cdmx,michoacan,3).
distance(michoacan,jalisco,5).
distance(jalisco,durango,6).
distance(durango,nuevoleon,7).

connected(X,Y,Distance):-
   distance(X,Y,Distance).
connected(X,Y,Distance):-
   distance(X,Z,Distance1),
   connected(Z,Y,Distance2),
   Sum is Distance1+Distance2,
   write(Sum).`

1 Ответ

0 голосов
/ 16 июня 2020

Вы были так близки. Во втором предикате connected вам просто нужно было установить значение Distance.

connected(X,Y,Distance):-
    distance(X,Y,Distance).
connected(X,Y,Distance):-
    distance(X,Z,Distance1),
    connected(Z,Y,Distance2),
    Distance is Distance1 + Distance2.

Теперь запрос ?- connected(cdmx,nuevoleon,Distance). работает нормально и дает Distance = 21.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...