如何在haskell中获得此数据类型的最大值

时间:2017-11-22 18:18:14

标签: haskell

这是我的方法

data Arbre = Feuille Int | Noad [Arbre]

maximum1 :: Arbre -> Int
maximum1 (Feuille a) = a
maximum1 (Noad xs) = maximum1 xs...

1 个答案:

答案 0 :(得分:0)

您有正确的想法,因为您的数据类型是

  1. 包含整数或
  2. 的类型
  3. 递归自己的列表
  4. 因此,如果您要检查此结构中所有值的最大值,则必须以递归方式检查每个列表。您希望在递归和下一步中的每个步骤之间调用最大值。

    data Arbre = Feuille Int | Noad [Arbre]
    
    maximum1 :: Arbre -> Int
    maximum1 (Feuille a) = a
    maximum1 (Noad (x:xs)) = max (maximum1 x) (maximum1 (Noad xs))
    maximum1 (Noad []) = 0
    

    棘手的部分是你需要对Arbres列表的头部和尾部进行模式匹配,然后在Noad中重新组合尾部以便能够递归地调用函数。还要检查Noad为空的情况(此解决方案假设为正整数)。