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).
謝謝:)
是的,amt1應該添加偶數元素並顯示。 – Roy 2010-12-11 17:02:49
我修改了代碼,試圖在遞歸部分工作,並修復了之前不匹配的'amt1'變量,仍然沒有給出輸出。 – Roy 2010-12-11 17:11:25
好吧,所以我已經將問題指向了'amt'變量......你知道爲什麼我不能使用'amt'並且必須使用單個字母變量instd嗎? – Roy 2010-12-11 17:27:49