2010-12-11 41 views
0

我試圖弄清楚如何在列表中添加偶數元素(我已經學習了示例,但不能自行完成,但需要您的幫助減少我對某個特定領域的理解)。在Prolog中添加偶數元素 - 問題與'amt'變量

我使用的輸入是start([1,2,3,4,5])。沒有編譯錯誤,但我沒有得到任何輸出。我不知道什麼邏輯錯誤是..你可以請指教嗎?

(請參閱下面的最新更新,修改我的代碼後,現在它的工作原理,以及問題出在我使用「AMT」的方式,但我不知道爲什麼!)

原創代碼沒有工作:

start(X):- add(X,1,amt), write(amt). 

add([],_,0). 
add([H|Tail],Cnt,amt):- 
    T is (Cnt mod 2), T == 0, Cnt1 is Cnt + 1, add(Tail,Cnt1,Y), amt is H+Y; 

    T is (Cnt mod 2), T =\=0, Cnt1 is Cnt + 1, add(Tail, Cnt1, amt). 

最新:

我換成 'AMT' 與 'S',和它的作品!但爲什麼它與'amt'一起工作呢?

這裏的作品修改後的代碼:

start(X):- add(X,1,S), write(S). 

add([],_,0). 
add([H|Tail],Cnt,S):- 
    T is (Cnt mod 2), T == 0, Cnt1 is Cnt + 1, add(Tail,Cnt1,Y), S is H+Y; 

    T is (Cnt mod 2), T =\=0, Cnt1 is Cnt + 1, add(Tail, Cnt1, S). 

謝謝:)

回答

1

你打算顯示AMT1?

+0

是的,amt1應該添加偶數元素並顯示。 – Roy 2010-12-11 17:02:49

+0

我修改了代碼,試圖在遞歸部分工作,並修復了之前不匹配的'amt1'變量,仍然沒有給出輸出。 – Roy 2010-12-11 17:11:25

+0

好吧,所以我已經將問題指向了'amt'變量......你知道爲什麼我不能使用'amt'並且必須使用單個字母變量instd嗎? – Roy 2010-12-11 17:27:49