我需要这样的东西last_And_prelast([5,a,d,2],A,B)输出A = d和B = 2
感谢
答案 0 :(得分:0)
您可以尝试使用内置,如@CappeliC所建议的那样:
last2( Xs , A , B ) :- append(_,[A,B],Xs) .
甚至
last2( Xs , A , B ) :- reverse(Xs,[B,A|_]) .
或者您可以尝试滚动自己的
last2( [A,B] , A , B ) .
last2( [_|Xs] , A , B ) :- last2(Xs,A,B) .
有多种方法可以做到。
答案 1 :(得分:-1)
此问题已在此处解决:How to get the 2 last values from a list in recursion and in tail-recursion?
使用此
last2_2([_|T],X,Y) :- last2_2(T,X,Y).
或者
last2_2([_,_|T],Y,Z):-last2_2(T,Y,Z).
last2_2([_,A,B],A,B).