我想编写一个函数,该函数返回一个新列表,其中包含与向右“旋转”次数rotate n l
相同的元素。例如,l
n
rotate 0 [1;2;3;4]
应该返回[1;2;3;4]
rotate 1 [1;2;3;4]
应该返回[4;1;2;3]
rotate 2 [1;2;3;4]
应该返回[3;4;1;2]
rotate 3 [1;2;3;4]
应该返回[2;3;4;1]
rotate 4 [1;2;3;4]
应该返回[1;2;3;4]
等等。
小于 0 的行为应该与等于 0 的行为相同。rotate n
我想在不使用.n
n
@
Pervasives
更新:这是我写的旋转函数:
let rot1 l =
let rec iterate acc = function
[] -> []
| [x] -> x :: List.rev acc
| x :: l -> iterate (x :: acc) l
in
iterate [] l;;
但我希望它在不使用List.rev
. 有没有办法做到这一点?