Функция f # для вычисления n!факультет - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь написать функцию (fac: n: int -> int), которая вычисляет N!факультет с использованием рекурсии.Но я понял что-то не так.надеюсь, что вы можете помочь

let rec factorial (fac : int -> int)  = 
    if  fac = 0 then 1 
    else fac * factorial (n-1)
let num = factorial 6
printfn "%A" num
printfn "%A" factorial

1 Ответ

0 голосов
/ 20 октября 2018

Нет ничего «очень» неправильного в вашей функции, кроме двух проблем:

  • factorial необходимо вернуть int и не принимать функцию от int до int:
    let rec factorial (fac : int) : int =
  • рекурсивный вызов должен пройти fac-1 вместо n-1:
    else fac * factorial (fac-1)

let rec factorial (fac : int) : int = if fac = 0 then 1 else fac * factorial (fac-1) let num = factorial 6 printfn "%A" num // 720

...