我想通过使用递归将最大和最小值作为一个元组从列表中取出。我在下面的代码中尝试过,无法真正弄清楚为什么它不起作用。我真的很希望得到一个小提示,说明我的推理错误是什么。非常感谢

seekMaxMin :: [Double] -> (Double,Double)
seekMaxMin [] = (0,0)
seekMaxMin [x] = (x,x)
seekMaxMin (x:rest) = (max x(seekMaxMin rest), min x(seekMaxMin rest))

最佳答案

seekMaxMin返回最小和最大值的元组,但是在您的
您首先假装的最后一个方程只返回最大值,其次
它只返回最小值。您可以使用模式来提取它们和
摆脱多余的清单。

seekMaxMin (x:rest) = (max x rmax, min x rmin)
    where (rmax, rmin) = seekMaxMin(rest)


我也有点反对将空双打的最小值设为
0,但也许适合使用此功能的任何目的。

10-06 14:35