我试图用Haskell编写自己的多个LCM函数,其中一个计算给定列表中所有元素的LCM。我试图使用属性lcm(a,b,c) = lcm(a,lcm(b,c))来使其递归。这是到目前为止我能想到的,但是它给了我一些我无法理解的错误。
multLCM xs
| length(xs) == 2 = lcm head(xs) last(xs)
| length(xs) > 2 = lcm head(xs) multLCM(drop 1 xs)有人能帮我改进这个功能吗?
非常感谢!
发布于 2016-07-28 18:22:56
括号不表示Haskell中的函数应用程序。例如,这些是等价的。
lcm head(xs) last(xs)
lcm head xs last xs也就是说,函数lcm提供了参数head、xs、last和xs。
括号允许您通过对函数及其参数进行分组来指定函数应用程序。
lcm (head xs) (last xs)发布于 2016-07-28 18:09:13
您应该使用模式匹配来解构列表:
multiLCM (x:xs) = lcm x (multiLCM xs)
multiLCM [x] = ???https://stackoverflow.com/questions/38643561
复制相似问题