我是序言编程的新手,我可以问一些简单的问题。
我想在序言中将列表向左旋转,如下所示:
rotatelist([1,2,3,4],R)
R=[2,3,4,1]
我尝试了以下代码:
rotatelist([],[]).
rotatelist([H1|T1],[H2|T2]) :- rotatelist(H1,T2).
我是序言编程的新手,我可以问一些简单的问题。
我想在序言中将列表向左旋转,如下所示:
rotatelist([1,2,3,4],R)
R=[2,3,4,1]
我尝试了以下代码:
rotatelist([],[]).
rotatelist([H1|T1],[H2|T2]) :- rotatelist(H1,T2).
为什么要使用递归..这不只是将头部移动到尾部的情况吗?
rotatelist([H|T], R) :- append(T, [H], R).
这样的事情应该可以解决问题:
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].
旋转列表([H|T],R):- 附加(T,[H],R1),rotatelist_2(R1,R)。 旋转列表_2(R,R)。 旋转列表_2(R1,R):-旋转列表(R1,R)。