我正在尝试在序言中编写一个谓词来查找列表中的第 K 个元素。例子:
?- element_at(X,[a,b,c,d,e],3).
X = c
我的代码如下
k_ele(X,[X|_],1).
k_ele(X,[_|T],Y) :- Y > 1,Y is Y - 1, k_ele(X,T,Y).
但没用,我在网上找到了解决方案
element_at(X,[X|_],1).
element_at(X,[_|L],K) :- K > 1, K1 is K - 1, element_at(X,L,K1).
这与我的逻辑相同,只是他们使用了一个额外的变量 K1。
我的代码有什么问题,为什么我需要另一个变量?