def computeInt(string: String): Int ={
if(string.isEmpty) 1
else
string.head.toInt*computeInt(string.drop(1))
}
def computeLong(string: String): Long={
if(string.isEmpty) 1
else
string.head.toInt*computeLong(string.drop(1))
}
问题: computeInt(“你好”)//我得到了正确的“825152896”
computeLong(“你好”)//我得错了答案“9415087488”
这真让我困惑。
答案 0 :(得分:9)
我不确定为什么你认为computeInt
会返回正确的答案,而事实上computeLong
更准确。
让我们来看看你的情况:
H: 72
e: 101
l: 108
l: 108
o: 111
在这种情况下你应该:
value = 72*101*108*108*101 = 9,415,087,488
大于Int.MAX_VALUE
,这意味着您在computeInt
看到的结果实际上是溢出。