Вопрос

Возможный дубликат:
F #] Как иметь два метода, звонив друг другу?

Всем привет,

У меня есть сценарий, где у меня есть две функции, которые получат выгоду от взаимного рекурсива, но я не уверен, как это сделать в F #

Мой сценарий не так прост, как следующий код, но я хотел бы получить что-то похожее на компиляцию:

let rec f x =
  if x>0 then
    g (x-1)
  else
    x

let rec g x =
  if x>0 then
    f (x-1)
  else
    x
Это было полезно?

Решение

Вы также можете использовать let rec ... and форма:

let rec f x =
  if x>0 then
    g (x-1)
  else
    x

and g x =
  if x>0 then
    f (x-1)
  else
    x

Другие советы

Чтобы получить взаимно рекурсивные функции, просто пройдите по одному на другое в качестве параметра

let rec f g x =
  if x>0 then
    g (x-1)
  else
    x

let rec g x =
  if x>0 then
    f g (x-1)
  else
    x

Использовать let rec ... and ... Конструкция:

let rec f x =
  if x>0 then
    g (x-1)
  else
    x

and g x =
  if x>0 then
    f (x-1)
  else
    x
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top