如何在haskell中获取此数据类型的最大值
这是我的方法如何在haskell中获取此数据类型的最大值,haskell,Haskell,这是我的方法 data Arbre = Feuille Int | Noad [Arbre] maximum1 :: Arbre -> Int maximum1 (Feuille a) = a maximum1 (Noad xs) = maximum1 xs... 您的想法是正确的,因为您的数据类型是 包含整数的类型,或 一个递归的列表 因此,如果要检查此结构中所有值的最大值,则必须递归检查每个列表。您希望调用递归中的每一步和下一步之间的最大值 data Arbre = Feuille
data Arbre = Feuille Int | Noad [Arbre]
maximum1 :: Arbre -> Int
maximum1 (Feuille a) = a
maximum1 (Noad xs) = maximum1 xs...
您的想法是正确的,因为您的数据类型是
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
棘手的部分是您需要对arbre列表的头部和尾部进行模式匹配,然后在Noad中重新组合尾部,以便能够递归调用函数。还要检查Noad是否为空(此解决方案假定为正整数)。为什么称为
maximum1
?对于Noad[]
,您希望返回什么?另外,您尝试了什么,在哪里遇到了问题?如果使用map maximum1 xs
,您将得到一个包含每个子树的最大值的列表。然后,您需要计算列表的最大值(并以某种方式处理空的大小写)。这是一种获取树的最大值的方法(Arbre=Tree,Feuille=leaf)。我希望它能够为Noad[]获取树的最大值。我不知道。谢谢您,这很有帮助!