我想创建一个递归函数,它将两个值之间的整数相加。我在做:
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
我做错了什么?
答案 0 :(得分:2)
函数应用程序在OCaml中具有高优先级。当表达式是函数的参数时,需要将表达式括起来。
您的代码
sum_between x+1 y
解析如下:
(sum_between x) + (1 y)
你需要括号:
sum_between (x + 1) y
(与Edgar Aroutiounian的答案相同,但我希望能提供更多有用的细节。)