endrekursion und lineare rekursion

BlackSalad

Bekanntes Mitglied
Hey,

ich verstehe die Enrekursion nicht so wirklich.
Ich check auch nicht ganz wofür das gut sein soll, wenn es sowieso langsamer ist als interativ.

Naja. es will nicht ganz in meinen Kopf wie das funktionieren soll.
zum Beispiel hab ich hier nen Code mal aus meinem Skript genommen, der ein Beispiel für ne endrekursion sein soll:



Java:
static int ggT2(int a, int b) {
if (b == 0) {
return a;
} else {
return ggT2(b, a % b);
}
}


ich weiß, dass der rekursive Funktionsaufruf die letzte Aktion des Zweigs zur Berechnung von der fuktion sein muss. Aber was bedeutet das in der Realität?


Ich würd mich freuen, wenn mir das jemand mal anschaulich erklären könnte. Hab schon ewig gesucht, aber versteh es immer noch nicht. :noe:


Danke schonma
 

chalkbag

Bekanntes Mitglied
Was mir nicht klar ist, verstehst du Rekursion an sich nicht, oder weißt du nur nicht was eine Endrekursion ist. Aus deinem Text deuten Anzeichen auf beides.


Wikipedia hat gesagt.:
Eine rekursive Funktion f ist endrekursiv (englisch: tail recursive) (auch endständig rekursiv, iterativ rekursiv, repetitiv rekursiv), wenn der rekursive Funktionsaufruf die letzte Aktion zur Berechnung von f ist.[1] Vorteil dieser Funktionsdefinition ist, dass kein zusätzlicher Platz zur Verwaltung der Rekursion benötigt wird.


ich weiß, dass der rekursive Funktionsaufruf die letzte Aktion des Zweigs zur Berechnung von der fuktion sein muss. Aber was bedeutet das in der Realität?

Der Vorteil, oder was das bedeutet, ist dass du eben nicht die Methode aufrufst und das Ergebnis nochmal separat betrachten musst. Anders gesagt, eine Endrekursion ist iterativ eine While-Schleife -> also mit Abbruchbedingung.
Vielleicht hilft es dir unterschiedliche Formen der Rekursion zu betrachten und so den Unterschied zu verstehen? (Rekursion ? Wikipedia)
Vielleicht hilft dir aber auch folgender Link, unter welchem die Unterscheide endrekursiv und nicht-endrekursiv behandelt werden (Rekursion)
 
Zuletzt bearbeitet:

BlackSalad

Bekanntes Mitglied
also ich glaube die rekursion an sich verstanjden zu haben, zumindest im groben, bin mir aber sehr unsicher. da mir das mit dem werte zurückgeben nicht so ganz klar ist wie das das funktioniert.

Aber bei der Endrekursion blick ich gar nicht durch...
 

chalkbag

Bekanntes Mitglied
aus meinem Link von Oben

Lineare Rekursion

Eine Funktion ist linear rekursiv, wenn nur ein rekursiver Aufruf erfolgt. Für die Fakultätsfunktion könnte das so aussehen:
fakul 0 = 1
fakul n = n(fakul n-1)

Der Computer würde bei Aufruf fakul 3 im ersten Schritt alle Aufrufe auf den Stack legen:
1. fakul 3 = 3 *
2. ( 2 *
4. ( 1 *
5. ( 1 ) ) )

und nach erreichen des Rekursionsankers fakul 0 = 1 alle auf dem Stack abgelegten Zahlen aufmultiplizieren:
5. ( 1 ) ) )
6. ( 1 *
7. ( 2 *
8. 3 *
9. 6 =

Die Rekursion wird also einmal hin und zurück durchlaufen.

Lineare Rekursionen, die nicht noch einmal "zurücklaufen", nennt man endrekursiv (tail recursion). Man unterscheidet also zwischen endrekursiven und nicht-endrekursiven linearen Rekursionen. Die Fakultätsfunktion lässt sich auch endrekursiv implementieren:
fakul 0 a = a
fakul n a = fakul (n-1) (a*n)

Besser könnt ich es nicht erklären, mir hat beim verstehen der Rekursion geholfen, das ganze mal für ein echtes Beispiel (z.b. dein ggt) auf dem Papier Schritt für Schritt zu durchlaufen.
 
Zuletzt bearbeitet:

BlackSalad

Bekanntes Mitglied
Danke schonmal. Ich glaub ich weiß jetzt schon bisschen mehr :)


Wäre das dann bei meinem Beispiel so, dass a und b gegeben sein müssen. und beim beispiel 6 und 4
würde die Funktion dann..

erst schauen, ob b 0 entspricht. und feststellen, dass b nicht 0 entspricht.
Java:
if (4 == 0) {

dann quasi ggT2(4, 6 % 4) nach oben geben

return ggT2(4, 6 % 4);



dann wäre quasi nach einem durchgang ggT2(4,6) ggT2(ggT2 6, 6% 4)


oder wie?

und wie wäre dann der 2. durchlauf?


Also mit der Fakultät ist es mir irgendwie deutlicher wie das geht. Aber bei dem ggT hab ich ja garkein n. Also keinen Basisfall.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E EndRekursion Java Basics - Anfänger-Themen 7
B Endrekursion Java Basics - Anfänger-Themen 6
NoP-ay Lineare Rekurison gibAnzahl Java Basics - Anfänger-Themen 6
amelie123456 Lineare Suche / Binäre Suche Java Basics - Anfänger-Themen 2
S Lineare listen verkettung Java Basics - Anfänger-Themen 7
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
V_Fynn03 Lineare Datenstrukturen Element löschen? Java Basics - Anfänger-Themen 2
S Java Lineare-Suche Zeitmessung Java Basics - Anfänger-Themen 5
S Java Lineare Suche Java Basics - Anfänger-Themen 1
A Was könnten typische Prüfungsaufgaben zum Thema lineare, verkettete Listen sein? Java Basics - Anfänger-Themen 5
B lineare und schlichte Rekursion Java Basics - Anfänger-Themen 1
A Lineare Rekursion Java Basics - Anfänger-Themen 6
R Klassen Die lineare Datenstruktur Queue Java Basics - Anfänger-Themen 3
N Array, lineare Suche, binäre Suche, Programm bleibt unerwartet stehen... Java Basics - Anfänger-Themen 6
L Einfache Lineare Suche Java Basics - Anfänger-Themen 7
S Lineare Gleichung lösen Java Basics - Anfänger-Themen 1
L Lineare Listen Java Basics - Anfänger-Themen 2
S Datentypen nicht lineare STATISCHE Datenstruktur? Java Basics - Anfänger-Themen 10
B lineare Gleichung programmieren Java Basics - Anfänger-Themen 2
P Lineare Suche im Array Java Basics - Anfänger-Themen 5
C Lineare Rekursion -> iterative Schleife Java Basics - Anfänger-Themen 3
B Lineare Suche Java Basics - Anfänger-Themen 5
U Lineare Suche in einem Array Java Basics - Anfänger-Themen 3
T Lineare Listen: sortiertes Einfügen Java Basics - Anfänger-Themen 6
I Lineare Gleichungssysteme lösen -> Problem Java Basics - Anfänger-Themen 3
M lineare Suche Java Basics - Anfänger-Themen 12
G verkettete lineare Liste Java Basics - Anfänger-Themen 2
D Lineare Kongruenz Java Basics - Anfänger-Themen 4
B Warum hat dieser einfache Algorithmus lineare Laufzeit? Java Basics - Anfänger-Themen 3
G Array - lineare Liste Java Basics - Anfänger-Themen 2
Chucky Lineare Listen Programm Verständnisproblem Java Basics - Anfänger-Themen 38
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
M Variablen Rekursion mit 2 Parameteren Java Basics - Anfänger-Themen 4
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
M Lösungsweg Rekursion Java Basics - Anfänger-Themen 1
C StackOverflow bei Rekursion Java Basics - Anfänger-Themen 7
D Rekursion - Ich raffs nicht Java Basics - Anfänger-Themen 16
N Methoden Rekursion mit Kreisen Java Basics - Anfänger-Themen 7
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
J Rekursion Java Basics - Anfänger-Themen 22
T Rekursion Programmierverständnis Java Basics - Anfänger-Themen 12
K Rekursion: Rechenmauer mit Array erstellen Java Basics - Anfänger-Themen 17
K Rekursion einer Zahlenfolge (Ab- und Aufzählung) Java Basics - Anfänger-Themen 6
Zeppi Rekursion Java Basics - Anfänger-Themen 15
V Backtracking und Rekursion Java Basics - Anfänger-Themen 15
L REKURSION Java Basics - Anfänger-Themen 13
Kirby.exe Rekursion Java Basics - Anfänger-Themen 7
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
X Rekursion Java Basics - Anfänger-Themen 3
H Rekursion Java Basics - Anfänger-Themen 2
D Erste Schritte Rekursion Java Basics - Anfänger-Themen 13
M Rekursion Tage Ansteckung gesamte Bevölkerung Java Basics - Anfänger-Themen 15
M Java Rekursion Java Basics - Anfänger-Themen 9
G Java Rekursion Java Basics - Anfänger-Themen 5
J Rekursion Klausur Aufgabe Java Basics - Anfänger-Themen 2
N Rekursion Java Basics - Anfänger-Themen 18
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
X Rekursion Rätsel Java Basics - Anfänger-Themen 4
N Klassen Rekursion mit Feldern von Objekten Java Basics - Anfänger-Themen 14
W Rekursion Java Basics - Anfänger-Themen 0
D Konsolenausgabe Zahlenfolge Rekursion Java Basics - Anfänger-Themen 3
J Ping Pong Methode mit Rekursion Java Basics - Anfänger-Themen 1
N Rekursion Java Basics - Anfänger-Themen 1
B Rekursion Basic Java Basics - Anfänger-Themen 15
O Rekursion Mergesort Java Basics - Anfänger-Themen 18
G Rekursion Java Basics - Anfänger-Themen 20
M Rekursion Java Basics - Anfänger-Themen 7
F Hilfe bei Rekursion... Java Basics - Anfänger-Themen 4
A Mit Rekursion Zufallszahlen erstellen und größte finden Java Basics - Anfänger-Themen 5
B Rekursion Wurzel Java Basics - Anfänger-Themen 39
O Rekursion ordentlich aufschreiben Java Basics - Anfänger-Themen 2
B Rekursion verstehen Java Basics - Anfänger-Themen 4
O Rekursion Java Basics - Anfänger-Themen 2
E Rekursion verstehen. Java Basics - Anfänger-Themen 4
E Rekursion Kisten befüllen Java Basics - Anfänger-Themen 10
E Rekursion verstehen Java Basics - Anfänger-Themen 2
O Rekursion, String Java Basics - Anfänger-Themen 8
N Invertierte Rekursion??? Java Basics - Anfänger-Themen 5
M Bitte um Hilfe bei Quellcode (Rekursion) Java Basics - Anfänger-Themen 6
T Rekursion Warum bricht meine Funktion nicht ab Java Basics - Anfänger-Themen 4
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
L Rekursion im Baum Java Basics - Anfänger-Themen 9
E Pfade eines Baums angeben ohne Rekursion Java Basics - Anfänger-Themen 20
L Rekursion Baumknoten Java Basics - Anfänger-Themen 8
L Rekursion größtes Zeichen Java Basics - Anfänger-Themen 8
L Rekursion Modulo Java Basics - Anfänger-Themen 7
I Rekursion Java Basics - Anfänger-Themen 11
H Rekursion Java Basics - Anfänger-Themen 7
N Methoden zur Rekursion (catalansche Zahlen) Java Basics - Anfänger-Themen 4
S Frage zu Rekursion... Java Basics - Anfänger-Themen 15
N Java catalansche Zahlen (Rekursion) Java Basics - Anfänger-Themen 5
S Noch eine Frage zur Rekursion... Java Basics - Anfänger-Themen 11
S Frage zu einer Rekursion Java Basics - Anfänger-Themen 15
F Methoden Abbruchbedingung bei Rekursion Java Basics - Anfänger-Themen 2
Z Rekursion Primzahlen Java Basics - Anfänger-Themen 1
K Rekursion Verständnisfrage Java Basics - Anfänger-Themen 19
L Methoden Rekursion gibt alten Wert wieder Java Basics - Anfänger-Themen 37
M Rekursion Minimums Suche Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben