Recursion 如何在SML中递归计算数字的位数

Recursion 如何在SML中递归计算数字的位数,recursion,functional-programming,sml,smlnj,Recursion,Functional Programming,Sml,Smlnj,我需要使用标准ML以递归方式计算数字的位数,假设数字0的表示形式有1位 fun digitCount 0 = 1 | digitCount n = 1 + digitCount (n div 10) 如果countDigit(0)为0,则很容易做到这一点,但在我编写的代码中,结果总是加一 使用if-then-else语句而不是零值模式匹配怎么样 fun digitCount n = if n < 10 then 1 else 1 + digitCount (n div 1

我需要使用标准ML以递归方式计算数字的位数,假设数字0的表示形式有1位

fun digitCount 0 = 1
  | digitCount n = 1 + digitCount (n div 10)

如果
countDigit(0)
为0,则很容易做到这一点,但在我编写的代码中,结果总是加一

使用
if-then-else
语句而不是零值模式匹配怎么样

fun digitCount n =
  if n < 10
  then 1
  else 1 + digitCount (n div 10)
有趣的数字计数n= 如果n<10 那么1 else 1+数字计数(n第10部分) 它并不比模式匹配更详细,甚至可以写成一行:

fun digitCount n = if n < 10 then 1 else 1 + digitCount (n div 10)
fun digitCount n=如果n<10,则1 else 1+digitCount(n div 10)
这两种情况是“一位数字”和“多位数字”,但您有“零”和“非零”两种情况。