我是 F# 的新手,我很好奇这是否还能进一步优化。我不确定我是否也正确地做到了这一点。我特别好奇最后一行,因为它看起来真的很长而且很丑陋。
我在谷歌上搜索过,但只显示罗马数字到数字的解决方案,所以我很难比较。
type RomanDigit = I | IV | V | IX
let rec romanNumeral number =
let values = [ 9; 5; 4; 1 ]
let capture number values =
values
|> Seq.find ( fun x -> number >= x )
let toRomanDigit x =
match x with
| 9 -> IX
| 5 -> V
| 4 -> IV
| 1 -> I
match number with
| 0 -> []
| int -> Seq.toList ( Seq.concat [ [ toRomanDigit ( capture number values ) ]; romanNumeral ( number - ( capture number values ) ) ] )
感谢任何可以帮助解决此问题的人。