F#: gegenseitig rekursive Funktionen [Duplikat
-
26-09-2019 - |
Frage
Mögliches Duplikat:
F#] Wie man zwei Methoden hat, die sich gegenseitig aufrufen?
Hallo alle,
Ich habe ein Szenario, in dem ich zwei Funktionen habe, die davon profitieren würden, gegenseitig rekursiv zu sein, aber ich bin mir nicht sicher, wie ich dies in F# machen soll
Mein Szenario ist nicht so einfach wie der folgende Code, aber ich möchte etwas Ähnliches wie kompilieren lassen:
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
Lösung
Sie können auch verwenden let
rec
... and
bilden:
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
Andere Tipps
Um gegenseitig rekursive Funktionen zu erhalten, geben Sie einfach als Parameter einen an den anderen weiter.
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
Verwenden Sie das let rec ... and ...
konstruieren:
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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow