使用非递归列表

时间:2015-10-26 13:38:19

标签: list f#

所以我最近一直在使用列表。 我想创建一个非递归函数name: int list -> int,它返回列表中最高和最低数字之间的差异。 是否有一种简单的方法可以使用list.fold, list.filter or list.exist?

我想我可以使用list.maxlist.min执行此操作,但我想尝试其他一些功能。

任何帮助?

1 个答案:

答案 0 :(得分:2)

你的意思是这样的吗?

let distanceMinMax xs = 
    let (min,max) = List.fold (fun (min, max) x -> ((if x < min then x else min), (if x > max then x else max))) 
                              (System.Int32.MaxValue, System.Int32.MinValue)
                              xs
    (max - min)

在REPL中测试:

> distanceMinMax [1;-1;2;5;7;-3];;
val it : int = 10

提示:不支持空列表[]:

> distanceMinMax [];;
val it : int = 1