这是我的方法
data Arbre = Feuille Int | Noad [Arbre]
maximum1 :: Arbre -> Int
maximum1 (Feuille a) = a
maximum1 (Noad xs) = maximum1 xs...
答案 0 :(得分:0)
您有正确的想法,因为您的数据类型是
因此,如果您要检查此结构中所有值的最大值,则必须以递归方式检查每个列表。您希望在递归和下一步中的每个步骤之间调用最大值。
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为空的情况(此解决方案假设为正整数)。