我在prolog编程方面真的很新,我可以问一些简单的问题。
我希望将列表旋转到prolog中,如下所示:
rotatelist([1,2,3,4],R)
R=[2,3,4,1]
我尝试了以下代码:
rotatelist([],[]).
rotatelist([H1|T1],[H2|T2]) :- rotatelist(H1,T2).
答案 0 :(得分:7)
为什么要使用递归..这不仅仅是将头移到尾部的情况吗?
rotatelist([H|T], R) :- append(T, [H], R).
答案 1 :(得分:2)
这样的事情应该做到这一点:
rotatelist(List, R):- rotatelist(List, R1, H), R = [H|R1].
rotatelist([H], [], H).
rotatelist([H|T], L, R) :- rotatelist(T, T1, R), L = [H|T1].
答案 2 :(得分:0)
rotatelist([H|T],R) :- append(T,[H],R1),rotatelist_2(R1,R). rotatelist_2(R,R). rotatelist_2(R1,R) :- rotatelist(R1,R).