首页 > 解决方案 > 如何在 F# 中实现获取最大元素函数?

问题描述

我对 F# 很陌生,并且在一些基本功能上遇到了麻烦。我得到了一份清单:

let list1 = [1;2;3;4;5;6;7]

我将如何创建一个getMax递归迭代list1并找到最大元素的函数?

我最困惑的是我将返回什么以及如何遍历列表。

标签: f#

解决方案


类似于在命令式语言中,您将循环遍历每个项目并将最大值存储在变量中,我们编写一个尾递归函数,编译器会将其转换为循环。

let getMax list =
    let rec loop current list = 
        match list with
        | [] -> current
        | head::tail -> loop (if head > current then head else current) tail

    loop (List.head list) list

这很冗长,但它是一个很好的起点。当然总是有List.maxand List.maxBy,但是理解循环的类比是它的一个重要部分。


推荐阅读