returns 多个数字列表中的最高平均值的函数
A function that returns the highest average from multiple lists of numbers
我必须定义一个 highestAverage :: [[Int]] -> Double
函数,该函数 returns 包含数字的列表列表中的最高平均值。
例如:
bestAverage [[3,1], [5,4,3], [], [5,5,5], [1,2,3]] == 5.0
我已经写了一个returns列表平均值的函数。
listAverage :: [Int] -> Double
listAverage [] = 0.0
listAverage x = fromIntegral(sum x)/fromIntegral(length x)
我的问题是我想不出一种方法让它进行递归。加载我的模块时总是出错。
我的代码现在看起来像这样:
highestAverage :: [[Int]] -> Double
highestAverage [[]] = 0.0
highestAverage (x:xs) = max(listAverage x, listAverage xs)
对于非空列表,您在第一个子列表 x
上调用 groupAvg
,然后确定该值之间的 max
,以及对尾部的递归调用名单。基本情况是我们计算最大值的单个子列表:
highestAverage :: [[Int]] -> Double
highestAverage <strong>[x]</strong> = listAverage x
highestAverage (x:xs) = <strong>max (listAverage x) (highestAverage xs)</strong>
此函数不适用于空列表。如果您想 return 0
用于空列表,您可以将基本情况更改为:
highestAverage :: [[Int]] -> Double
highestAverage <strong>[]</strong> = 0
highestAverage (x:xs) = <strong>max (listAverage x) (highestAverage xs)</strong>
您可以简单地将您的函数映射到列表上并取最大值:
最大 $ map listAverage [[3,1], [5,4,3], [], [5,5,5], [1,2,3]]
我必须定义一个 highestAverage :: [[Int]] -> Double
函数,该函数 returns 包含数字的列表列表中的最高平均值。
例如:
bestAverage [[3,1], [5,4,3], [], [5,5,5], [1,2,3]] == 5.0
我已经写了一个returns列表平均值的函数。
listAverage :: [Int] -> Double
listAverage [] = 0.0
listAverage x = fromIntegral(sum x)/fromIntegral(length x)
我的问题是我想不出一种方法让它进行递归。加载我的模块时总是出错。 我的代码现在看起来像这样:
highestAverage :: [[Int]] -> Double
highestAverage [[]] = 0.0
highestAverage (x:xs) = max(listAverage x, listAverage xs)
对于非空列表,您在第一个子列表 x
上调用 groupAvg
,然后确定该值之间的 max
,以及对尾部的递归调用名单。基本情况是我们计算最大值的单个子列表:
highestAverage :: [[Int]] -> Double
highestAverage <strong>[x]</strong> = listAverage x
highestAverage (x:xs) = <strong>max (listAverage x) (highestAverage xs)</strong>
此函数不适用于空列表。如果您想 return 0
用于空列表,您可以将基本情况更改为:
highestAverage :: [[Int]] -> Double
highestAverage <strong>[]</strong> = 0
highestAverage (x:xs) = <strong>max (listAverage x) (highestAverage xs)</strong>
您可以简单地将您的函数映射到列表上并取最大值:
最大 $ map listAverage [[3,1], [5,4,3], [], [5,5,5], [1,2,3]]