0

OCamlと5つの引数の中央値を見つけることについてアドバイスが必要です(私はこの言語の完全な初心者です)

これまでのところ、

let med5 x1 x2 x3 x4 x5 = if x1<=x2 then x1,x2 else x2,x1; if x2<=x3 then x2,x3 else x3,x2...   

私は正しい道を進んでいますか?

4

2 に答える 2

0

一般的に言えば、このコードは正しい方向に進んでいるようです。ただし、コードは数値のペアを返しています。最終的には、コードが 1 つの数値を返すようにする必要があります。

最小に近い数の比較でこの問題を解決するのは非常に難しいようです。5 つの数の 120 の異なる順序があり、それらのかなりの部分を追跡する必要があります。

可能性の数を少なくするために、すべての数字を並べ替えて、真ん中の数字を取ることができます。または、いくつかの数字のグループを並べ替えて、そこから作業することもできます。

次のコードは、3 つの数字のうち 2 つを並べ替えてから 3 つ目の数字がどこにあるかを特定することで、3 つの数字の中央値を算出するコードです。

let med3 a b c =
    let (l, h) = if a < b then (a, b) else (b, a) in
    if c < l then l else if c > h then h else c
于 2013-10-23T04:03:40.617 に答える