2017-04-15 7 views
0

私は、リストのn番目の要素を返すために使用している関数を持っています。 dispnth([1、2、3、4] 2、X)のような入力とリストのn番目の要素を表示し、falseを返します。

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

私は

X=2. 

を取得する必要がありますしかし、私は偽取得しています。

アイデア?

答えて

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

驚くばかりであるべき、ありがとうございました! –

+0

ようこそ。ちなみに、入力 'dispnth([1,2,3,4、2、X).'では、あなたの配列がゼロであるかのように' X = 3'を取得し、 'X = 2'を取得しません-indexed。そうでなければ、最初の述部の0を1に置き換える必要があります。 – Rafalon

関連する問題