F #: взаимно рекурсивные функции [дубликат
-
26-09-2019 - |
Вопрос
Возможный дубликат:
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
Не связан с StackOverflow