2015-09-11 3 views
0

Я хочу сделать рекурсивную функцию, которая суммирует целые числа между двумя значениями. Я делаю:Выполнение рекурсивной функции в 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 но выражение Ожидалось типа междунар

Что я делаю неправильно?

+4

необходимо sum_between (x + 1) y –

+1

@EdgarAroutiounian Как насчет отправки этого ответа? –

ответ

2

Функция приложения имеет высокий приоритет в OCaml. Вам нужно заключить в скобки выражение, когда это аргумент функции.

Ваш код

sum_between x+1 y 

обрабатывается следующим образом:

(sum_between x) + (1 y) 

Вы должны круглые скобки: (. Тот же ответ, как Эдгар Арутюнян, но более полезные детали, я надеюсь)

sum_between (x + 1) y