【问题标题】:Making recursive function in OCaml在 OCaml 中制作递归函数
【发布时间】:2015-12-08 11:31:07
【问题描述】:

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

 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 类型的表达式

我做错了什么?

【问题讨论】:

  • 需要 sum_between (x + 1) y
  • @EdgarAroutiounian 发布这个作为答案怎么样?

标签: ocaml


【解决方案1】:

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

你的代码

sum_between x+1 y

解析如下:

(sum_between x) + (1 y)

你需要括号:

sum_between (x + 1) y

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

【讨论】:

    猜你喜欢
    • 2012-10-17
    • 2018-04-02
    • 1970-01-01
    • 2013-05-20
    • 2011-10-16
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多