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

Recursion 用于显示列表第n个元素的函数返回false。,recursion,prolog,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. 但我越来越假了 有什么想法吗 检查您的最后一行: dispnth([H|T], 0, H). dispnth([H|T], C, Result) :- dispnth(T, NewC, H), New

我使用一个函数返回列表的第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.
但我越来越假了

有什么想法吗

检查您的最后一行:

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).

不客气。顺便说一句,对于输入dispnth[1,2,3,4],2,X,您应该得到X=3,而不是X=2,就像您的数组是零索引的一样。否则,应将第一个谓词中的0替换为1。