2017-04-15 134 views
0

我有一個函數用來返回列表的第n個元素。函數顯示列表的第n個元素,返回false。

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

檢查你的最後一行:

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',就好像你的數組爲零-索引。否則,你應該用1替換第一個謂詞中的0。 – Rafalon