List 需要删除prolog中最后一个元素
我一直在尝试在prolog中做不同的事情,希望删除最后一个元素,但我不知道如何删除 这是我的代码:List 需要删除prolog中最后一个元素,list,prolog,List,Prolog,我一直在尝试在prolog中做不同的事情,希望删除最后一个元素,但我不知道如何删除 这是我的代码: without(X,[X,_],[]). without(X,[K|Xs],[K|AlmoustLast]) :- without(X,Xs,AlmoustLast). 这就是我在编译时收到的信息 ?- without(X,[1,2,3,4,5],A). X = 4, A = [1, 2, 3] . 当我试图达到的目标是A=[1,2,3,5]。你几乎是对的 without(X,[X,
without(X,[X,_],[]).
without(X,[K|Xs],[K|AlmoustLast]) :-
without(X,Xs,AlmoustLast).
这就是我在编译时收到的信息
?- without(X,[1,2,3,4,5],A).
X = 4,
A = [1, 2, 3] .
当我试图达到的目标是A=[1,2,3,5]。你几乎是对的
without(X,[X,_],[]).
without(X,[K|Xs],[K|AlmoustLast]) :-
without(X,Xs,AlmoustLast).
事实上,以下是
without(X,[X,Y],[Y]).
without(X,[K|Xs],[K|AlmostLast]) :-
without(X,Xs,AlmostLast).
给你
?- without(X,[1,2,3,4,5],A).
A = [1,2,3,5]
X = 4
你几乎是对的
without(X,[X,_],[]).
without(X,[K|Xs],[K|AlmoustLast]) :-
without(X,Xs,AlmoustLast).
事实上,以下是
without(X,[X,Y],[Y]).
without(X,[K|Xs],[K|AlmostLast]) :-
without(X,Xs,AlmostLast).
给你
?- without(X,[1,2,3,4,5],A).
A = [1,2,3,5]
X = 4
Rafalon给出了正确的结果,我将对此进行解释 您的基本案例规则逻辑有缺陷:
without(X,[X,_],[]).
这里您的意思是,如果从[X,]
中删除最后一个,那么您将得到元素X
和列表[]
,但这听起来不符合逻辑,是吗?发生了什么事?你在这里使用了一个匿名变量,这意味着你不在乎它,但你真的在乎!正如Rafalon所指出的,这条规则应该是:
without(X, [X,Y], [Y]).
因此,列表[X,Y]
中的最后一个给出了元素X
,列表[Y]
Rafalon给出了正确的结果,我将对此进行解释
您的基本案例规则逻辑有缺陷:
without(X,[X,_],[]).
这里您的意思是,如果从[X,]
中删除最后一个,那么您将得到元素X
和列表[]
,但这听起来不符合逻辑,是吗?发生了什么事?你在这里使用了一个匿名变量,这意味着你不在乎它,但你真的在乎!正如Rafalon所指出的,这条规则应该是:
without(X, [X,Y], [Y]).
因此,列表[X,Y]
中的最后一个给出了元素X
和列表[Y]
!。看看没有(1[1,2],L)
!谢谢事实上,当我计算最后两个数字的和时,我使用了相同的东西(sumf(X,Y,[X,Y],u.),但我没有想到在这里使用它……谢谢!事实上,当我计算最后两个数字的和时,我使用了相同的东西(sumf(X,Y,[X,Y],u.),但我没有想到在这里使用它……这是真的,我可以而且我应该解释它+谢谢你的解释。那是真的,我可以也应该解释一下+谢谢你的解释。