Rekursion: Unterschied zwischen den Versionen
Aus EINI
Marius (Diskussion | Beiträge) (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…“) |
Marius (Diskussion | Beiträge) |
||
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=" | + | <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.