Prolog 为列表的最后n个元素创建谓词

Prolog 为列表的最后n个元素创建谓词,prolog,Prolog,例如: ?-lastN([1,2,3,4],3,T). T = [2,3,4] 这就是我要写的: lastN(L,N,R):- length(L,X), X1 is X-N, lastT(L, N,R). lastT(L,0,L). lastT(X,[H|T],L):- X2 is X-1, lastT(T,X2,L). 我假设问题是“谓词获取列表中最后N个元素”,这就是您要做的。这是在计算了需要丢弃多少元素后,对第一个元素的简单丢弃,对吗?它也完全不处理不正确的输入 lastN(L,N,R

例如:

?-lastN([1,2,3,4],3,T).
T = [2,3,4]
这就是我要写的:

lastN(L,N,R):- length(L,X), X1 is X-N, lastT(L, N,R).
lastT(L,0,L).
lastT(X,[H|T],L):- X2 is X-1, lastT(T,X2,L).

我假设问题是“谓词获取列表中最后N个元素”,这就是您要做的。这是在计算了需要丢弃多少元素后,对第一个元素的简单丢弃,对吗?它也完全不处理不正确的输入

lastN(L,N,R):- length(L,X), X1 is X-N, lastT(L,X1,R).
lastT(L,0,L).
lastT([H|T],X,L):- X2 is X-1, lastT(T,X2,L).

有什么问题?请注意,尽管您要求的是整数的lengthL,X,因为您调用了lastN[1,2,3,4],3,T。但L是第二个参数,而不是lastN,L,R的第一个参数。我看不出有问题