2016-11-12 99 views

回答

0

基礎案例是具有單個元件(列表)的列表:

find([[X|Xs]|T],[X|Xs]) :- find(T,[Y|_]), X =< Y. 
find([[X|_]|T],[Y|Ys]) :- find(T,[Y|Ys]), X > Y. 

find([X],X). 

然後,遞歸地,可以在頭部的列表與所述尾部的最小列表進行比較

或更有效地:

find([[X|Xs]|T],L) :- find(T,[Y|Ys]), (X =< Y, L = [X|Xs] ; X > Y, L = [Y|Ys]). 

例如:

?- find([[3,1,4,3],[1,1,2,4],[2,4,3,1]],X). 
X = [1, 1, 2, 4] ;