Prolog总结列表中的最后一个元素

时间:2015-11-08 14:35:02

标签: recursion prolog

我的程序中有几个列表作为事实

road(1, 2, 3)
road(2, 3, 4)

我试图总结一下我列表中的最后一个元素。我知道如何在Prolog中使用last/2运算符获取最后一个元素。但是,如何以递归方式对多个道路列表的最后一个元素求和?

1 个答案:

答案 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.