Objektorientierte Programmierung und Modellierung (Fach) / Rekursive Funktionen (Lektion)
In dieser Lektion befinden sich 3 Karteikarten
WS 15/16
Diese Lektion wurde von RouHim erstellt.
- Was ist eine Rekursive Funktion? Bei der rekursiven Programmierung ruft sich eine Prozedur, Funktion oder Methode in einem Computerprogramm selbst wieder auf. Vorteile: Leicht zu programmieren Leicht zu verstehen Nachteile: Verbraucht viel Speicher Kann schnell einen Stapelüberlauf (Stackoverflow) verursachen
- Wie entwickelt man einen Rekursions-Stapel anhand einer vorgegebenen Java Logik? Allgemeine Vorgehensweise, Beispiel anhand Fibonacci-Folge: Rekursion im Java Code finden, Beispiel "fib ( n − 1 ) + fib ( n − 2 ) "Wichtig ist der Teil: n-1 und n-2 Rekursions-Stapel mit dem Anfangswert von n beginnen (ist vorgegeben z.B.: [n5]) Jetzt Zeilenweise das letzte Element in Rekursionsteile(n-1 & n-2) aufteilen bis ein Element 0 wird.Achtung: Die Rekursionsteile müssen Rückwärts behandelt werden, also zuerst n-2 und dann n-1. Dann immer das letzte Element so länge entfernen (pro Zeile) bis ein Element wieder bearbeitet werden kann, also nicht mehr 0 ergibt. Wenn alles abgearbeitet ist als letztes "[ ]" schreiben. Bsp.:"fib ( n − 1 ) + fib ( n − 2 ) "n = 5 [n5][n3, n4][n3, n2, n3][n3, n2, n1, n2][n3, n2, n1, n0, n1][n3, n2, n1, n0][n3, n2, n1][n3, n2][n3, n0, n1][n3, n0][n3][n1, n2][n1, n0, n1][n1, n0][n1][ ]
- Wann ist eine Funktion Endrekursiv? Wenn der Rekursionsaufruf die letze Anweisung in der rekursiven Funktion ist. Endrekursion Bsp.:add_sum(m, n) if n=0 return m else return add_sum (m+n, n-1) Keine Endrekursion:sum(n) if n=0 return 0 else return n + sum(n-1)
