如何使用OCaml创建Tail递归函数?语法建议&需要解释

时间:2014-10-05 03:27:55

标签: recursion ocaml tail

这是OCaml中的主要代码,用于带有Tail递归的Sigma函数。

let sigma_tail_rec term a next b  =
 let rec iter a result = 
   if "A" then "B"
   else iter "C" "D"
 in iter a 0

我不知道如何填充<A><D>,因此无法编译

是否有人帮助我填写<A>到`......?

我试过这样的

let sigma_tail_rec term a next b  =
 let rec iter a result = 
   if a>b then result+1
   else iter a+1 result+a
 in iter a 0

我不知道“ in iter a 0 ”语法是什么意思

1 个答案:

答案 0 :(得分:1)

我可以解释in iter a 0

OCaml中递归本地函数的定义如下所示:

  

let rec 有趣 参数 = 定义 in 表达

表达式中,您可以调用函数 fun ,该函数由定义定义。

sigma_tail_rec的框架定义使用名为iter的本地递归函数,它带有两个参数。 表达式(给出sigma_tail_rec的总值)为iter a 0

如果没有关于这项任务的更多信息,很难说更多。一般来说,我要说你需要调用term(这可能决定你何时到达计算结束时)和next(可能会生成一个新值来处理)。所以有很多工作要做,我很害怕。