【发布时间】:2012-09-30 20:21:33
【问题描述】:
在 OCaml 中,我将如何编写一个接受 5 个参数并返回中值的中值函数。例如med5 2 5 7 4 3 将返回 4。
我设法使用 if 和 else 语句编写了一个 med3 函数(返回 3 个参数的中值),但是如果我尝试对 5 个参数使用相同的技术,这将变得非常复杂:(
let med3 a b c =
if ((b<=a && c>=a) || (c<=a && b>=a)) then a
else if ((a<=b && c>=b) || (c<=b && a>=b)) then b else c;;
对于 med5 函数,我希望能够使用 min 和 max 函数(OCaml 内置)从 5 个参数集中丢弃最高和最低值。然后我可以使用我已经编写的 med3 函数来返回剩余 3 个参数的中位数,但是如何丢弃最小和最大参数!?!?!?!?
任何帮助将不胜感激:)
【问题讨论】:
-
除非我记错了,
med5 2 5 7 4 3是4而不是3 -
哈哈,你说的对,谢谢指出:)