我在我的程序有几个列表为事实序言总结的最后一个元素列表中的
road(1, 2, 3)
road(2, 3, 4)
我试着总结一下我的列表中的最后一个元素。我知道如何在Prolog中使用last/2
运算符得到最后一个元素。但我怎么能以递归方式总结多个路线列表的最后一个元素?
我在我的程序有几个列表为事实序言总结的最后一个元素列表中的
road(1, 2, 3)
road(2, 3, 4)
我试着总结一下我的列表中的最后一个元素。我知道如何在Prolog中使用last/2
运算符得到最后一个元素。但我怎么能以递归方式总结多个路线列表的最后一个元素?
你可以这样做:
采取一切最后的元素,并把它们放在一个列表:
findall(X, road(_, _, X), L).
总和列表中的所有元素:
sum([], 0).
sum([H|T], S1):- sum(T, S2), S1 is H + S2.
总结,该解决方案是为FO llow:
countLast(Sum):- findall(X, road(_, _, X), L), sum(L, Sum).
sum([], 0).
sum([H|T], S1):- sum(T, S2), S1 is H + S2.
这些都不是骗人 – lurker