Rekursion: Unterschied zwischen den Versionen

Aus EINI
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „Ein '''rekursiver''' Algorithmus oder Programm ist ein Alorithmus/Programm, welches sich selber immer wieder aufruft. Jede Rekursion kann theoretisch durch ein…“)
 
Zeile 1: Zeile 1:
Ein '''rekursiver''' Algorithmus oder Programm ist ein Alorithmus/Programm, welches sich selber immer wieder aufruft. Jede Rekursion kann theoretisch durch eine Schleife ersetzt werden und umgekehrt, jedoch ist dies nicht immer ratsam. Schleifen und Rekursionen sind also semmantisch äquivalent.
+
Ein '''rekursiver''' Algorithmus oder Programm ist ein Alorithmus/Programm, welches sich selber immer wieder aufruft. Jede Rekursion kann theoretisch durch eine Schleife ersetzt werden und umgekehrt, jedoch ist dies nicht immer ratsam. Schleifen und Rekursionen sind also semmantisch äquivalent. Rekursion kommt vom lateinischen Wort ''recurrere'', was ''zurücklaufen'' bedeutet.  
  
 
===Erstes Beispiel für eine Rekursion===
 
===Erstes Beispiel für eine Rekursion===
  
<source lang="Java"> public int Beispiel1(int n)
+
<source lang= "java"> public int Beispiel1(int n)
 
   {
 
   {
 
   if(n == 0)
 
   if(n == 0)
Zeile 11: Zeile 11:
 
   else
 
   else
 
     {
 
     {
         return Beispiel1(n-1);
+
         return n*Beispiel1(n-1);
 
     }
 
     }
 
   }
 
   }
 
</source>
 
</source>
 +
 +
Dieses Beispiel berechnet n Fakultät. Dieses Programm wird nun beispielhaft mit dem Wert n = 3  aufgerufen:
 +
<source>
 +
'''n = 3'''
 +
Z. 3 ist ''false'', else-Zweig wird ausgeführt
 +
Z. 9 wird ausgeführt: ''3''  *Beispiel(''3''-1)
 +
 +
Das Programm führt nun die Methode für n = 2 aus
 +
'''n = 2'''
 +
Z. 3 ist ''false'', else-Zweig wird ausgeführt
 +
Z. 9 wird ausgeführt: ''2'' * Beispiel(''2''-1)
 +
 +
Das Programm führt nun die Methode für n = 1 aus
 +
'''n = 1'''
 +
Z. 3 ist nun ''true''
 +
Z. 6 Die Methode Beispiel(1) gibt nun 1 an Beispiel(2) zurück
 +
 +
Beispiel1(2) erhält nun das Ergbnis der Methode Beispiel1(1) und gibt ''2*1'' an die Methode Beispiel1(3) zurück
 +
 +
Beispiel1(3) erhält nun das Ergbnis der Methode Beispiel1(2) und gibt ''3*2*1'' zurück, was ''6'' ist.

Version vom 10. Juli 2015, 16:32 Uhr

Ein rekursiver Algorithmus oder Programm ist ein Alorithmus/Programm, welches sich selber immer wieder aufruft. Jede Rekursion kann theoretisch durch eine Schleife ersetzt werden und umgekehrt, jedoch ist dies nicht immer ratsam. Schleifen und Rekursionen sind also semmantisch äquivalent. Rekursion kommt vom lateinischen Wort recurrere, was zurücklaufen bedeutet.

Erstes Beispiel für eine Rekursion

 public int Beispiel1(int n)
  {
   if(n == 0)
   {
        return 1;
   }
   else
     {
        return n*Beispiel1(n-1);
     }
  }

Dieses Beispiel berechnet n Fakultät. Dieses Programm wird nun beispielhaft mit dem Wert n = 3 aufgerufen:

'''n = 3'''
Z. 3 ist ''false'', else-Zweig wird ausgeführt
Z. 9 wird ausgeführt: ''3''  *Beispiel(''3''-1)

Das Programm führt nun die Methode für n = 2 aus
'''n = 2'''
Z. 3 ist ''false'', else-Zweig wird ausgeführt
Z. 9 wird ausgeführt: ''2'' * Beispiel(''2''-1)

Das Programm führt nun die Methode für n = 1 aus
'''n = 1'''
Z. 3 ist nun ''true''
Z. 6 Die Methode Beispiel(1) gibt nun 1 an Beispiel(2) zurück

Beispiel1(2) erhält nun das Ergbnis der Methode Beispiel1(1) und gibt ''2*1'' an die Methode Beispiel1(3) zurück

Beispiel1(3) erhält nun das Ergbnis der Methode Beispiel1(2) und gibt ''3*2*1'' zurück, was ''6'' ist.