小编Ale*_*dar的帖子

F#排列

我需要在给定列表上生成排列.我设法做到这一点

let rec Permute (final, arr) = 
    if List.length arr > 0 then
        for x in arr do
            let n_final = final @ [x]
            let rest = arr |> List.filter (fun a -> not (x = a))
            Permute (n_final, rest)
    else
        printfn "%A" final

let DoPermute lst  = 
    Permute ([], lst)

DoPermute lst
Run Code Online (Sandbox Code Playgroud)

这段代码存在明显的问题.例如,列表元素必须是唯一的.而且,这与我在任何其他语言中生成直接实现时使用的方法相同.有没有更好的方法在F#中实现它.

谢谢!

f#

10
推荐指数
3
解决办法
4745
查看次数

标签 统计

f# ×1