当前位置:  开发笔记 > 编程语言 > 正文

使用模式匹配和递归F#查找列表中的最大元素

如何解决《使用模式匹配和递归F#查找列表中的最大元素》经验,为你挑选了1个好方法。

我正在尝试使用下面给出的模板在列表中找到最大元素而不使用List.Max进行学校作业.

        let findMax l = 
        let rec helper(l,m) = failwith "Not implemented"

        match l with
        | [] -> failwith "Error -- empty list"
        | (x::xs) -> helper(xs,x) 

我能想到的唯一解决问题的方法是atm

        let rec max_value1 l =
          match l with
          |[] -> failwith "Empty List"
          |[x] -> x
          |(x::y::xs) ->  if x

有什么方法可以从我构建的函数转到使用模板的函数吗?谢谢!



1> Gus..:

你的辅助函数应该做的工作,外部函数只是验证列表不是空的,如果不是,调用帮助器,这应该是这样的:

let rec helper (l,m) = 
    match (l, m) with
    | []   , m -> m
    | x::xs, m -> helper (xs, max m x)

请注意,自从您与函数的最后一个参数匹配后,您可以将其删除并使用function而不是match with:

let rec helper = function
    | []   , m -> m
    | x::xs, m -> helper (xs, max m x)

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有