Lernpfad:Rekursion in Java: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Dieser Lernpfad ist derzeit noch im Aufbau.
Arbeitsauftrag
Arbeitsauftrag
Thi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Thi (Diskussion | Beiträge) |
||
| Zeile 29: | Zeile 29: | ||
{{Aufgabe:Start}} | {{Aufgabe:Start}} | ||
Aufgabe 1.1: Markieren Sie im Quelltext die einzelnen Bestandteile einer rekursiven Funktion. | Aufgabe 1.1: Markieren Sie im Quelltext die einzelnen Bestandteile einer rekursiven Funktion. | ||
<zuordnung> | |||
::public int fakultät (int n){ | |||
:: if (n > 1){::Abbruchbedingung | |||
:: return n*fakultät (n-1);::rekursiver Aufruf::Reduktion des Problems | |||
:: }else{ | |||
:: return 1; | |||
:: } | |||
::} | |||
</zuordnung> | |||
{{Aufgabe:End}} | {{Aufgabe:End}} | ||
Version vom 30. Dezember 2018, 23:45 Uhr
Rekursion in Java |
|---|
| Inhalt bearbeiten |
Einführung Rekursion
In diesem Lernpfad lernst du die Grundlagen der rekursiven Programmierung kennen. Dieses Prinzip wird in vielen Anwendungen verwendet.
Definition: Eine rekursive Methode besteht aus
- einer Abbruchbedingung
- einer Reduktion des Problems
- mindestens einem Aufruf der rekursiven Methode
Beispiel Rekursion
Mit der folgenden Methode wird die Fakultät berechnet.
Die Fakultät ist ein mathematischer Operator und wird durch ein Ausrufezeichen dargestellt
4! = 4*3*2*1; (Das Ausrufezeichen steht dabei hinter der Zahl).
In Java wird dieser Operator bzw. diese Funktion nicht zur Verfügung gestellt, deshalb muss sie programmiert werden.
Der Quelltext für die Methode sieht wie folgt aus:
public int fakultät (int n){
if (n > 1){
return n*fakultät (n-1);
}else{
return 1;
}
}
Aufgabe 1.1: Markieren Sie im Quelltext die einzelnen Bestandteile einer rekursiven Funktion.
| public int fakultät (int n){ | ||
| if (n > 1){ | Abbruchbedingung | |
| return n*fakultät (n-1); | rekursiver Aufruf | Reduktion des Problems |
| }else{ | ||
| return 1; | ||
| } | ||
| } |
Ergänzen Sie den Aufrufbaum zu dem Methodenaufruf z(5) .
public int z(x) {
if (x > 1){
return a + z(x - 2);
}else{
return 1;
}
}