我正在尝试编写一个在给定列表的每个位置插入整数 n 的函数。小例子,insert_everywhere 0 [1;2] -> [[0;1;2]; [1;0;2]; [1;2;0]]
。我写了这个:
let insert_everywhere l n =
let l_aux = [] in
let rec aux l1 l2 = match l1 with
| [] -> []
| x::tl -> (l_aux @ [n] @ l1) :: aux tl (l_aux @ [x])
in aux l l_aux
;;
问题是调用aux tl (l_aux @ [x])
不符合我的要求。我的想法是:当我阅读列表的头部时,我插入另一个列表,我将其附加到数字n
和列表的其余部分。通过这种方式,我将获得最终列表,但我目前的实现却没有……</p>