我对Prolog有点问题。我希望你们能帮助我!
'查找'确实在列表中查找索引(例如4)并将答案放在Return中。 找(听,指数,回归)。
输出类似于:
输出元素:四个 输出结果:_G2360。
我猜_G2360是变量的内部名称? 我该怎么办才能得到:
输出结果:四。
代码段:
[...]
find(List,4,Return),
write("Output result: ",Return).
find([Element|_],0,Element):-
write("Output element: ",Element).
find([_|List],N,_) :-
N1 is N-1,
find(List,N1,_).
谢谢! 对于糟糕的标题感到抱歉,我无法想到一个好问题,可以用一些有意义的话来解决问题。
答案 0 :(得分:1)
find
的递归子句没有将Element
传递给递归调用,导致你看到的问题:你所传递的“不关心”变量代替Element
成为输出中的_G2360
,因为它与任何内容统一。
以下是解决此问题的方法:
find([Element|_],0,Element).
find([Head|List], N, Element) :- N1 is N-1, find(List, N1, Element).