我正試圖編寫一個程序來解決Prolog河內問題的塔。這裏沒有任何帖子幫助我,所以我決定要求自己。我寫了下面的代碼。它可以很好地用於2個磁盤,而是進入一個無限循環的3Prolog - 河內塔
hanoi(1,A,B,_,[(A,B)]).
hanoi(X,A,B,C,Y):-
hanoi(X2,A,C,B,Y1),
hanoi(1,A,B,_,[Y2]),
hanoi(X2,C,B,A,Y3),
append(Y1,[Y2|Y3],Y),
X2 is X-1.
這就是所謂的通過以下方式:
?- hanoi(3, a, b, c, Y).
A,B,C是釘。 3是磁盤的數量,X是我們想要的結果。
我需要在Y中得到結果我試圖遞歸地找到X-1光盤從掛鉤1到3使用2,1光盤從掛鉤1到2,X-1光盤從掛鉤3到2並追加它們。我無法理解我做錯了什麼。任何幫助或指導,將不勝感激!謝謝!
這些參數意味着什麼?哪些必須被實例化爲什麼類型的術語?或者:向我們展示你如何稱謂這個謂詞。 – 2014-10-17 07:13:54