这个
Haskell程序打印“1.0”如何让它打印“1”?
fact 0 = 1 fact x = x * fact (x-1) place m n = (fact m) / (fact n) * (fact (m-n)) main = do print (place 0 0)
解决方法
通过使用/ operation,您要求haskell使用小数数据类型.在这种情况下,您可能不希望这样.最好使用整数类型,如Int或Integer.所以我建议你做以下事情:
1.为事实函数添加一个类型声明,类似于fact :: Integer – >整数
2.使用quot代替/.
1.为事实函数添加一个类型声明,类似于fact :: Integer – >整数
2.使用quot代替/.
所以你的代码应该是这样的:
fact :: Integer -> Integer fact 0 = 1 fact x = x * fact (x-1) place :: Integer -> Integer -> Integer place m n = (fact m) `quot` (fact n) * (fact (m-n)) main = do print (place 0 0)
此外,正如@leftaroundabout所指出的,您可能希望使用更好的算法来计算这些二项式数.
原文地址:https://www.jb51.cc/css/214860.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。