【发布时间】:2015-11-04 18:59:54
【问题描述】:
我必须编写一个程序,在输出中给出一个元组:非空列表的最小值和最大值以及最常出现的值。 特别是:
min_max [1;0;-1;2;0;-4] ==> (-4; 2)
min_max: int list -> (int * int)
mode [-1;2;1;2;5;-1;5;5;2] ==> 2
mode: int list -> int
这是我为 max 编写的代码(min 几乎相等),但是如何接收具有两个值的元组作为输出?
let rec max_list xs =
match xs with
| [] -> failwith "xs" "Empty list"
| [x] -> x
| x1::x2::xs' -> max_list((max2 x1 x2)::xs');;
【问题讨论】:
-
作为旁注;你的
max_list的目的似乎有点复杂;如果当前头部更大,则可以更简单地使用列表的其余部分传递当前最大值并更新它。或不传递它;只返回当前头部和尾部的 max_list 之间的最大值
标签: f#