在OCaml中进行递归函数

时间:2015-09-11 20:05:55

标签: ocaml

我想创建一个递归函数,它将两个值之间的整数相加。我在做:

 let rec sum_between x y = 
   if x>y then sum_between y x else
      if x=y then x else x + sum_between x+1 y ;;

但我收到错误:此表达式的类型为int - > INT        但是期望表达式为int

我做错了什么?

1 个答案:

答案 0 :(得分:2)

函数应用程序在OCaml中具有高优先级。当表达式是函数的参数时,需要将表达式括起来。

您的代码

sum_between x+1 y

解析如下:

(sum_between x) + (1 y)

你需要括号:

sum_between (x + 1) y

(与Edgar Aroutiounian的答案相同,但我希望能提供更多有用的细节。)