我想在Haskell中編寫自己的多重LCM函數,它計算給定列表中所有元素的LCM。我試圖使用屬性lcm(a,b,c)= lcm(a,lcm(b,c))使其遞歸。這是我迄今爲止所能想到的,但它給了我一些我無法理解的錯誤。在Haskell中遞歸實現LCM
multLCM xs
| length(xs) == 2 = lcm head(xs) last(xs)
| length(xs) > 2 = lcm head(xs) multLCM(drop 1 xs)
有人可以幫我改進這個功能嗎?
非常感謝!
完全避開語法問題:因爲'(lcm,1)'在自然數上形成一個monoid,所以應該考慮'multLCM = foldr lcm 1'。 –