Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OCaml上浮点的阶乘_Ocaml_Tail Recursion_Factorial - Fatal编程技术网

OCaml上浮点的阶乘

OCaml上浮点的阶乘,ocaml,tail-recursion,factorial,Ocaml,Tail Recursion,Factorial,我是OCaml的新手,我试着做一个尾部递归函数来计算浮点的阶乘。以下是我所做的: let factorial num = let rec aux i f = if i=num then f else aux (i+.1.) (float f*.(i+.1.)) in aux 0. 1.;; 它给了我一个错误:这个表达式有float类型,但是一个表达式应该是int类型 我不知道如何修复,因为我找不到错误在哪里。float是一个接受int并返回float的函数 # float;;

我是OCaml的新手,我试着做一个尾部递归函数来计算浮点的阶乘。以下是我所做的:

let factorial num =
let rec aux i f =
    if i=num then f
    else aux (i+.1.) (float f*.(i+.1.))
in aux 0. 1.;;
它给了我一个错误:这个表达式有float类型,但是一个表达式应该是int类型


我不知道如何修复,因为我找不到错误在哪里。

float
是一个接受int并返回float的函数

# float;;
- : int -> float = <fun>

为什么在第四行使用
float f
# let factorial num =
    let rec aux i f =
      if i=num then f
      else aux (i+.1.) (f*.(i+.1.))
   in aux 0. 1.;;
val factorial : float -> float = <fun>

# factorial 4.0;;
- : float = 24.