Rekursion: Unterschied zwischen den Versionen

Aus SibiWiki
Zur Navigation springen Zur Suche springen
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 23: Zeile 23:
Die folgende rekursive Methode berechnet n! = 1*2*3*...*n
Die folgende rekursive Methode berechnet n! = 1*2*3*...*n


<code>
<code>
  // rekursive Methode mit Parameter
  // rekursive Methode mit Parameter
  // n wird bei jedem Aufruf eins runtergezählt!
  // n wird bei jedem Aufruf eins runtergezählt!
 
  public int fakultaet(int n) {
  public int fakultaet(int n) {
   '''//Abbruchbedingung'''
   '''//Abbruchbedingung'''
Zeile 37: Zeile 38:
   return ergebnis;
   return ergebnis;
  }
  }
</code>
</code>


==Wo kommt das noch vor?==
==Wo kommt das noch vor?==

Aktuelle Version vom 23. Januar 2022, 18:13 Uhr

Unter dem Schlagwort Rekursion werden folgende Sachverhalte zusammengefasst:

  • rekursive Methoden
  • rekursive Datenstrukturen

rekursive Methoden

Rekursive Methoden sind Methoden, die sich selber aufrufen, um z.B. eine Berechnug auszuführen.

Wichtig sind dabei folgende Elemente:

  • ein Parameter, in dem man je nach Rekursionsstufe einen anderen Wert übergeben kann.
  • eine Abbruchbedingung für das Rekursionsende - sonst läuft die Methode ewig weiter.
  • ein (oder mehrere) rekursive Aufrufe.

einfaches Beispiel

Die folgende rekursive Methode berechnet n! = 1*2*3*...*n


// rekursive Methode mit Parameter
// n wird bei jedem Aufruf eins runtergezählt!
 
public int fakultaet(int n) {
  //Abbruchbedingung
  if (n <= 1) {
    return 1;
  }
  // rekursiver Aufruf fuer n-1
  int zahl = fakualtaet(n-1);
  // Sachlogik
  int ergebnis = n * zahl;
  return ergebnis;
}

Wo kommt das noch vor?

rekursive Methoden braucht man bei folgenden Themen:

rekursive Datenstrukturen

Binärbäume sind als Datenstruktur rekursiv definiert. Denn jeder Binärbaum enthält seinerseits zwei Binärbäume (den rechten und den linken).