Gegenseitiger recursion

Gegenseitiger recursion ist eine Form von recursion, wo zwei mathematische oder rechenbetonte Funktionen in Bezug auf einander definiert werden.

Denken Sie zum Beispiel zwei Funktionen und definiert wie folgt:

Funktion sogar? (Zahl: Ganze Zahl)

wenn Zahl == 0 dann

geben Sie wahren zurück

sonst

kehren Sie seltsam zurück? (abs (Nummer)-1)

seltsame Funktion? (Zahl: Ganze Zahl)

wenn Zahl == 0 dann

geben Sie falschen zurück

sonst

kehren Sie sogar zurück? (abs (Nummer)-1)

Diese Funktionen basieren auf der Verwirklichung, dass die Frage drei ist, sogar ist zur Frage gleichwertig, ist zwei seltsam, der dasselbe als das Fragen ist, wenn 1 sogar ist oder 0 seltsam ist. Schließlich ist die Antwort nein, wie begriffen, durch die Funktion. Die Funktion wird verwendet, um sicherzustellen, dass die Verminderung zur Null, selbst wenn es als ein negativer Wert anfängt.

Gegenseitiger recursion ist im funktionellen Programmierstil sehr üblich, und wird häufig für Programme verwendet, die in LISPELN, Schema, ML und ähnlichen Sprachen geschrieben sind. Auf Sprachen wie Einleitung ist gegenseitiger recursion fast unvermeidlich.

Einige Programmierstile entmutigen gegenseitigen recursion, behauptend, dass es verwirrend sein kann, um die Bedingungen zu unterscheiden, die eine Antwort von den Bedingungen zurückgeben werden, die dem Code erlauben würden, für immer zu laufen, ohne eine Antwort zu erzeugen. Peter Norvig weist zu einem Designmuster hin, das den Gebrauch völlig entmutigt, festsetzend

Jeder gegenseitige recursion kann umgewandelt werden, um recursion durch inlining der Code eines Verfahrens in den anderen zu leiten.

In der Mathematik sind die Hofstadter Weiblichen und Männlichen Folgen ein Beispiel eines Paares von auf eine gegenseitig rekursive Weise definierten Folgen der ganzen Zahl.

Siehe auch

  • Recursion (Informatik)

Mike Oldfield / Variable von Metasyntactic
Impressum & Datenschutz