假設我有以下功能保存變量,並用它在遞歸
printVariance :: [Float] -> IO()
printVariance [] = return()
printVariance (x:xs)
| x >= avg (x:xs) = print (x - avg (x:xs)) >> printVariance xs
| otherwise = printVariance xs
它得到一個列表,檢查哪些元素是比一般的大,並打印自己的value - avg
。
我的問題是avg
值每一步都會改變。我怎樣才能定義它一次並使用它的遞歸值呢?
您可能需要使用摺疊和貼圖來重寫,而不是直接遞歸。這將允許你在'(foldr(+)0 xs)/ length xs'的行上附加一個'where'或'let'綁定,你將'avg'定義爲某些東西。 – Michail