问题
Possible Duplicate:
[F#] How to have two methods calling each other?
Hello all,
I Have a scenario where I have two functions that would benefit from being mutually recursive but I'm not really sure how to do this in F#
My scenario is not as simple as the following code, but I'd like to get something similar to compile:
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
回答1:
You can also use let
rec
... and
form:
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
回答2:
To get mutually recursive functions simply pass one to the other as a parameter
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
回答3:
Use the let rec ... and ...
construct:
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
来源:https://stackoverflow.com/questions/3621043/f-mutually-recursive-functions