大家好,
我有一个场景,我有两个功能可以从相互递归中受益,但我不确定如何在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
答案 0 :(得分:27)
您还可以使用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
答案 1 :(得分:2)
要获得相互递归的函数,只需将其作为参数传递给另一个
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
答案 2 :(得分:2)
使用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