如何输出一个数字的第一位数字,即使它是负数?

Gra*_*ant 1 math recursion haskell negative-number

在 haskell 中,我使用以下方法获取正数的第一位:

firstDigit :: Int -> Int
firstDigit n
    | n < 10    = n
    | otherwise = firstDigit (div n 10)
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决负数的情况?我是否只需要在运行程序的其余部分之前检查它们,或者是否有更直观的东西?

Wil*_*sem 5

您可以先调用abs然后使用递归函数,因此:

firstDigit :: Int -> Int
firstDigit = go . abs
    where go n | n < 10 = n
               | otherwise = go (div n 10)
Run Code Online (Sandbox Code Playgroud)