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
War es hilfreich?

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
scroll top