我是 F# 的新手,正在编写一些简单的算法来习惯该语言,这需要 argMax
.标准库是否带有用于搜索最大化函数的列表元素的函数?也就是说,如果有一个现有函数的行为如下:
let argMax f xs =
let rec go a fa zs =
match zs with
| [] -> a
| z :: zs' ->
let fz = f z
if fz > fa
then go z fz zs'
else go a fa zs'
match xs with
| [] -> invalidArg "xs" "empty"
| x :: xs' -> go x (f x) xs'
最佳答案
是的,但它叫 List.maxBy
.
下面是一个例子:
let f x = -(x * x) + 100 * x + 1000
List.maxBy f [0..1000]
// val it : int = 50
f 50
// val it : int = 3500
还有
List.minBy
相同的功能可用于 Seq
和 Array
.
关于f# - F# 库是否具有 `argMax` 的标准函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32936987/