Я новичок в OCaml.У меня есть небольшое упражнение для обучения, чтобы познакомиться с понятием взаимной рекурсии в OCaml.Идея функции, которую мне нужно написать, состоит в том, чтобы иметь возможность подсчитать шаги функции. В основном: есть склад с двумя сотрудниками, которым необходимо доставить эти коробки.Сотрудник А может вынимать по одной коробке за раз, Сотрудник Б может вынимать по 2 коробки за раз, если количество оставшихся ящиков четное.Извлечение одного блока (или двух) - это один шаг.
Я пытался использовать переменную, которую я пытаюсь увеличивать при каждом вызове одной из функций.
Вот код, который ядо сих пор.
let rec employeeA n =
let x = 0 in
if n > 0 && n mod 2 = 0 then
x + 1 + employeeB(n-2)
else
0
and employeeB n =
let x = 0 in
if n > 0 && n mod 2 != 0 then
x + 1 + employeeA(n-1)
else
0;;
До сих пор он возвращал 0 или 1 для функции employeeA или 0 или 2 для функции employeeB.Хотя ожидаемый результат будет, например, для 11 блоков, если EmployeeA запускается, он должен вернуть 10 шагов, а если EmployeeB - 11 шагов.
Спасибо.