我的程序中有几个列表作为事实
road(1, 2, 3)
road(2, 3, 4)
我试图总结一下我列表中的最后一个元素。我知道如何在Prolog中使用last/2
运算符获取最后一个元素。但是,如何以递归方式对多个道路列表的最后一个元素求和?
答案 0 :(得分:1)
你可以这样做:
获取所有最后的元素并将它们放入列表中:
findall(X, road(_, _, X), L).
对列表中的所有元素求和:
sum([], 0).
sum([H|T], S1):- sum(T, S2), S1 is H + S2.
总结一下,解决方案如下:
countLast(Sum):- findall(X, road(_, _, X), L), sum(L, Sum).
sum([], 0).
sum([H|T], S1):- sum(T, S2), S1 is H + S2.