haskell - 从将数字转换为二进制字符串的 Haskell toBinary 函数中删除前置“0”输出?
问题描述
我是 Haskell 的新手。我的函数应该采用一个整数并将其转换为以 2 为底的字符串。我的代码可以正常工作,但我想从结果中删除“0”。
例如,我想要的 toBinary 16 输出“010000”而不是“10000”。
有人有建议吗?
toBinary :: Integer -> [Char]
toBinary x = if (x == 0) then "0" else toBinary ( div x 2 ) ++ show(mod x 2 )
解决方案
您需要一个调用递归函数的辅助函数,因为只有一种情况需要在前面加上“0”(当数字为 0 时)。
toBinary' :: Integer -> String
toBinary' 0 = ""
toBinary' x = toBinary' (div x 2) ++ show (mod x 2)
toBinary :: Integer -> String
toBinary 0 = "0"
toBinary x = toBinary' x
推荐阅读
- flutter - 在颤动中设置父状态时,计时器不会重置
- javascript - 您应该考虑开关中的 1 值吗?
- c++ - 为什么 bin_to_dec() 返回 0?
- php - codeigniter - php - 不插入数据库
- python-3.x - 为什么 Python Choropleth 地图不显示颜色?
- git - 在 ClearCase 中,需要 CLI 调用来列出所有修订
- flutter - DefaultTabController 没有脚手架?
- flutter - 在项目中查找 Dart.io 和 getApplicationDocumentsDirectory 生成的文件
- spring-restcontroller - 如何在 FeignClient 中定义与多个端点的映射?
- php - Excel 中的文件格式和扩展名不匹配