Странное поведение в рекурсивной функции f # - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь использовать простую рекурсивную функцию в 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

Я думаю, что происходит какое-то переполнение, но я не должен получить ошибку ???

...