Я пытаюсь использовать простую рекурсивную функцию в 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
Я думаю, что происходит какое-то переполнение, но я не должен получить ошибку ???