リストで動作する再帰関数があります。関数には、それ自体が呼び出されるループが含まれており、別の関数で終了します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、誰か確認できますか?