我在我的程序有幾個列表爲事實序言總結的最後一個元素列表中的
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