使用 Haskell 将十进制数字转成罗马数字

本文介绍了使用Haskell进行十进制到罗马数字的转换方法,详细阐述了递归和尾递归在转换过程中的应用,并探讨了将罗马数字转回十进制的思想。通过实例解析了Haskell函数式编程的特点。
摘要由CSDN通过智能技术生成

最近一边看「Haskell 函数式编程入门」一边自学 Haskell。函数式编程对笔者这种受OOP毒害颇深(虽然我完全不会 Java,但是经常会被别人来自 Java 背景的_(:」∠))的菜鸟来说,还是很难适应的。想着目前主力语言是 C++,一种多范式编程语言,学习 Haskell 也算是自然而然吧。
学一门新语言还是很痛苦的,但是如果能做出什么的话还是很高兴的!废话就不多说了。

已知

罗马数字像是一种很有趣的五进制,说是五进制,但还不准确。在罗马数字中,i 为 1,v 为 5,x 为 10,l 为 50,c 为 100,但是 4、 9、40、90 分别用 iv、ix、xl、xc 来表示,将小一级的罗马数字放在左边表示减法。1∼10 罗马数字为:i、ii、iii、iv、v、vi、vii、viii、ix、x。

求解

在此笔者和「Haskell函数式编程入门」作者一样只考虑 5000 以内的罗马数字。首先将几个特殊的罗马数字和与之对应的十进制数放在一起:

romeNotation :: [String]
romeNotation =
    ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值