使用謂詞,rotate(L,M,N)
,其中L
是通過將M
旋轉到右邊N
次所形成的新列表。序言:正確旋轉列表n次
我的做法是將M
的尾部追加到其頭部N
次。
rotate(L, M, N) :-
( N > 0,
rotate2(L, M, N)
; L = M
).
rotate2(L, [H|T], Ct) :-
append(T, [H], L),
Ct2 is Ct - 1,
rotate2(L, T, Ct2).
目前,我的代碼返回L
等於原始M
,不管是什麼N
設置爲。 好像當我遞歸時,尾巴沒有正確地移動到頭部。
提示:只需兩次調用'append',您就可以更高效地完成此操作。 – 2013-05-08 00:30:20
@larsmans你的意思是隻有兩個電話追加?我需要不斷減少N嗎? – 2013-05-08 00:47:10