SWI Prolog - 变量名称和变量值

时间:2014-10-21 13:37:20

标签: prolog

我对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,_).

谢谢! 对于糟糕的标题感到抱歉,我无法想到一个好问题,可以用一些有意义的话来解决问题。

1 个答案:

答案 0 :(得分:1)

find的递归子句没有将Element传递给递归调用,导致你看到的问题:你所传递的“不关心”变量代替Element成为输出中的_G2360,因为它与任何内容统一。

以下是解决此问题的方法:

find([Element|_],0,Element).
find([Head|List], N, Element) :- N1 is N-1, find(List, N1, Element).

Demo.