我正在尝试在f#中使用朴素的递归函数:
let rec fact n =
if n > 0 then
n * fact (n - 1)
else
1
对于较小的参数,它可以正常工作,但是,如果传递足够大的数字,则它会以奇怪的方式失败:
> fact 41;;
val it : int = 0
> fact 25;;
val it : int = 2076180480
> fact 26;;
val it : int = -1853882368
我猜正在发生某种程度的溢出,但是我不应该得到一个错误吗?