我有一个在列表上工作的递归函数,该函数包含一个调用自身的循环,并以另一个函数结束g
。它的结构类似如下,为了简化问题,我们可以假设它l
始终是一个没有重复元素的列表。
let rec f l = function
| [] -> g ()
| _ ->
List.fold_left
(fun acc x ->
let lr = List.filter (fun a -> (a <> x)) l in
acc + (f lr))
1 l
我不确定如何表达这个函数List.length l
的复杂性,以及g
.
g
我认为它与 的复杂性和阶乘成正比,List.length l
有人可以确认吗?