递归和

问题描述 投票:0回答:1

我有一个问题,关于我如何能使用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).

recursion prolog swi-prolog
1个回答
0
投票

你是如此接近。在你的第二个 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.

© www.soinside.com 2019 - 2024. All rights reserved.