f#函数计算n!学院

时间:2018-10-20 17:19:38

标签: recursion f#

我正在尝试编写一个计算N的函数(fac:n:int-> int)!教师使用递归。但是我错了。希望你能帮忙

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 :(得分:1)

您的功能没有“非常”错误,只有两个问题:

  • 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