对于试图在Prolog中编写的列表中返回倒数第二个元素的问题感到困惑.这种语言使用起来很有趣,但是我无法绕过它.这是我有的:
secondLast([X], X).
secondLast(X, [Y], X) :- secondLast(Y, K).
secondLast(X, [Y|Z], K) :- secondLast(Y, Z, K).
secondLast([X|Z], Ans) :- secondLast(X, Z, Ans).
Run Code Online (Sandbox Code Playgroud)
所以呼唤secondLast([a, b, c, d], X).
X应该相等c.
有任何想法吗?
谢谢!
你应该应用模式匹配:
secondLast([X,_], X).
secondLast([_|T], X) :- secondLast(T, X).
Run Code Online (Sandbox Code Playgroud)