显示列表第n个元素的函数返回false。

时间:2017-04-15 21:42:52

标签: recursion prolog

我有一个函数用于返回列表的第n个元素。

dispnth([H|T], 0, H).  
 dispnth([H|T], C, Result) :-
 dispnth(T, NewC, H), NewC is C -1.

输入就像     dispnth([1,2,3,4],2,X)。

我应该

X=2.

但我变得虚假。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

检查你的最后一行:

dispnth([H|T], 0, H).  
dispnth([H|T], C, Result) :-
   dispnth(T, NewC, H), NewC is C -1.

应该是

dispnth([H|T], 0, H).  
dispnth([H|T], C, Result) :-
   Newc is C - 1,
   dispnth(T, Newc, Result).