大整数函数返回零

时间:2019-05-28 14:54:41

标签: scala

Scala中的一个简单阶乘函数对于太大的整数返回零。我应该不会出错?要使编译器/解释器发现此类问题该怎么办?

使用BigInt可以处理大量数字,但不能解决错误消息丢失的问题。

scala> :paste

// Entering paste mode (ctrl-D to finish)

def factorial(n: Int): Int = {
  def go(n: Int, acc: Int): Int =
    if (n <= 0) acc
    else go(n-1, n*acc)
  go(n, 1)
}

// Exiting paste mode, now interpreting.

factorial: (n: Int)Int

scala> factorial(34)

res8: Int = 0

这就是我所期望的:

scala> val x = 1
x: Int = 1

scala> x + 9999999999999999999
<console>:1: error: integer number too large
       x + 9999999999999999999
           ^

0 个答案:

没有答案