Lernpfad:Rekursion in Java: Unterschied zwischen den Versionen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(26 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Status/In Bearbeitung von|thi}}{{Warnung|Dieser Lernpfad ist derzeit noch im Aufbau.}}
{{Kurzlink|rekursion}}
{{Navigation}}
{{Navigation}}
{{Inhalt}}
{{Inhalt}}


=Einführung Rekursion=
=Einführung Rekursion=
In diesem Lernpfad lernst du die Grundlagen der ''rekursiven Programmierung'' kennen. Dieses Prinzip wird in vielen Anwendungen verwendet.  
[[Datei:Screenshot_Recursion_via_vlc.png|thumb|right|Rekursion bei der Aufnahme eines Bildschirmfotos mit dem VLC-Player.]]
In diesem Lernpfad lernst du die Grundlagen der [[wikipedia:Rekursion|rekursiven Programmierung]] kennen. Dieses Prinzip wird in vielen Anwendungen verwendet. Es entsteht aber auch ganz aus Versehen im Alltag, wenn du beispielsweise das Bild eines Monitors mit [https://www.videolan.org VLC] aufzeichnest und dabei in diesem Bild auch der VLC-Player selber zu sehen ist. Einen ähnlichen Effekt erhältst du, wenn du deinen Handy-Bildschirm auf einen Monitor überträgst und den Monitor filmst.  


{{Schublade |
An diesen Beispielen wird deutlich, dass ''Rekursion'' ein Verfahren ist, bei dem eine ''Wiederholung des Gleichen'' verwendet wird.  
Definition: Eine rekursive Methode besteht aus
#einer Abbruchbedingung
#einer Reduktion des Problems
#mindestens einem Aufruf der rekursiven Methode 
| Farbe=#c7d210}}
==Erstes Beispiel Rekursion: Fakultät==
Mit der folgenden Methode wird die Fakultät berechnet. <br />
Die Fakultät ist ein mathematischer Operator und wird durch ein Ausrufezeichen dargestellt <br />
4! = 4*3*2*1; (Das Ausrufezeichen steht dabei hinter der Zahl).<br />
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:
<syntaxhighlight lang="java" line="1" >
public int fakultät (int n){
  if (n < 2){
    return 1;
  }else{
    return n*fakultät (n-1);
  }
}
</syntaxhighlight>
{{Aufgabe:Start}}
Aufgabe 1.1: Ordnen Sie den Quelltext-Teilen die einzelnen Bestandteile einer rekursiven Methode zu.<br />
public int fakultät (int n){
<zuordnung>
::  if (n < 2){::Abbruchbedingung
::    return 1;::Abbruch der Rekursion
::    return n*fakultät (n-1);::rekursiver Aufruf::Reduktion des Problems
</zuordnung>
{{Aufgabe:End}}


==Der Aufrufstapel==
[[Datei:Sierpinski-zoom4-ani.gif|left|Animation des Sierpinski-Dreiecks.]]
Intern werden die Methodenaufrufe einer rekursiven Methode auf einem Stapel gespeichert. Die Methoden, die ganz oben auf dem Stapel liegen, werden zuerst abgearbeitet. Danach wird das Resultat der Methode verwendet, um die darunterliegenden Methoden zu berechnen. Der Aufrufstapel der Methode Fakultät sieht wie folgt aus:
Auch das [[wikipedia:Sierpinski-Dreieck|Sierpinski-Dreieck]] ist ein Beispiel für Rekursion. Das Dreieck besteht aus Dreiecken, die aus Dreiecken bestehen, die aus ...
[[Datei:01_Rekursion_Aufrufstack_Fakultaet.png | 200px]]


==Der Aufrufbaum==
Im {{PfadNext|nächsten Schritt}} geht es weiter.
Durch einen Aufrufbaum wird die schrittweise Lösung eines Problems dargestellt. Im Aufrufbaum werden die Parameter und die Rückgaben der Methode visualisiert.
<!--
Der rechte Aufrufbaum verdeutlicht die Berechnungen, die für die Fakultät gemacht werden müssen:
=Weitere Quellen=
 
- http://www.saar.de/~awa/jrekursion.html
 
-->
{{Aufgabe:Start}}
[[Kategorie:Lernpfade]][[Kategorie:Lernpfade Informatik]][[Kategorie:Lernpfade zu Java]][[Kategorie:Lernpfade Q1/Q2]]
Ergänzen Sie den Aufrufbaum zu dem Methodenaufruf z(5) .
<syntaxhighlight lang="java" line="1" >
public int z(x) {
  if (x > 1){
    return a + z(x - 2);
  }else{
    return 1;
  }
}
</syntaxhighlight>
{{Aufgabe:End}}

Aktuelle Version vom 12. Februar 2022, 11:01 Uhr

style="margin-right:-24px;"
Inhalt Lernpfad
Rekursion in Java
  1. Rekursion in Java
  2. Definition
  3. Aufrufstapel
  4. Aufrufbaum
  5. Rekursion bei Schachproblemen
  6. Selbst eine rekursive Methode schreiben
Inhalt bearbeiten

Einführung Rekursion

Rekursion bei der Aufnahme eines Bildschirmfotos mit dem VLC-Player.

In diesem Lernpfad lernst du die Grundlagen der rekursiven Programmierung kennen. Dieses Prinzip wird in vielen Anwendungen verwendet. Es entsteht aber auch ganz aus Versehen im Alltag, wenn du beispielsweise das Bild eines Monitors mit VLC aufzeichnest und dabei in diesem Bild auch der VLC-Player selber zu sehen ist. Einen ähnlichen Effekt erhältst du, wenn du deinen Handy-Bildschirm auf einen Monitor überträgst und den Monitor filmst.

An diesen Beispielen wird deutlich, dass Rekursion ein Verfahren ist, bei dem eine Wiederholung des Gleichen verwendet wird.

Animation des Sierpinski-Dreiecks.

Auch das Sierpinski-Dreieck ist ein Beispiel für Rekursion. Das Dreieck besteht aus Dreiecken, die aus Dreiecken bestehen, die aus ...

Im nächsten Schritt geht es weiter.