【发布时间】:2018-01-21 20:33:25
【问题描述】:
下面的代码是f#中mergesort的代码,我必须重写它,所以它使用了模式匹配。
let rec msort xs =
let sz = List.length xs
if sz < 2 then xs
else let n = sz / 2
let ys = xs.[0..n-1]
let zs = xs.[n..sz-1]
in merge (msort ys) (msort zs)
到目前为止,我已经到了这里:
let rec msort (vs: int list) =
let sz = List.length xs
match xs with
| List.length < 2 -> vs
| _ ->
let n = sz / 2
let ys = xs.[0..n-1]
let zs = xs.[n..sz-1]
in merge (msort ys) (msort zs)
我似乎找不到更好的方法。有没有人可以帮我上路?
【问题讨论】:
-
您到底有什么问题?你可以学习this question on Code Review。
标签: f# pattern-matching