簡體   English   中英

Haskell中列表上的遞歸函數

[英]Recursive Function on a List in Haskell

我想通過使用遞歸將最大和最小值作為一個元組從列表中取出。 我在下面的代碼中嘗試過,無法真正弄清楚為什么它不起作用。 我將不勝感激,這是我的一個錯誤提示。 非常感謝

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

seekMaxMin返回min和max的元組,但是在最后一個方程式中,您首先假裝僅返回max,其次僅返回min。 您可以使用一種模式來提取它們兩者,並擺脫多余的列表。

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

我也有點反對將雙打的空列表的最小值設為0,但此功能可能適合於任何目的。

Monocell的答案就是我推薦的答案。 但是,查看您的代碼,我認為您可能一直在想的邏輯是:

seekMaxMin :: [Double] -> (Double,Double)
seekMaxMin [] = (0,0)
seekMaxMin [x] = (x,x)
seekMaxMin (x:rest) = (maximum $ x:[fst $ seekMaxMin rest], minimum $ x:[snd $ seekMaxMin rest])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM