Ответ 1
Вы также можете использовать форму 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
Возможный дубликат:
[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