递归f#函数中的奇数行为

时间:2019-02-23 16:36:28

标签: recursion f# integer-overflow

我正在尝试在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

我猜正在发生某种程度的溢出,但是我不应该得到一个错误吗?

0 个答案:

没有答案