我有一个问题,关于我如何能使用prolog递归求和,我一直在尝试做,但它不计算第一个元素,我的意思是,例如,如果选择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).
你是如此接近。在你的第二个 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
.