faecher:informatik:oberstufe:algorithmen:rekursion:rekursionsschachteln:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Nächste ÜberarbeitungBeide Seiten, nächste Überarbeitung
faecher:informatik:oberstufe:algorithmen:rekursion:rekursionsschachteln:start [13.01.2022 08:27] – [Fallunterscheidung ist unbedingt notwendig] sbelfaecher:informatik:oberstufe:algorithmen:rekursion:rekursionsschachteln:start [13.01.2022 08:42] – [Fallunterscheidung ist unbedingt notwendig] sbel
Zeile 35: Zeile 35:
 Die Funktion ruft sich aber nicht bedingungslos selbst auf, sondern nur dann, wenn eine Schachtel (und kein Schlüssel) gefunden wird. Wenn man diese Fallunterscheidung weglässt, erzeugt man eine "rekursive Endlosschleife": Die Funktion ruft sich bedingungslos immer wieder selbst auf, das Programm kommt zu keinem Ende. Die Funktion ruft sich aber nicht bedingungslos selbst auf, sondern nur dann, wenn eine Schachtel (und kein Schlüssel) gefunden wird. Wenn man diese Fallunterscheidung weglässt, erzeugt man eine "rekursive Endlosschleife": Die Funktion ruft sich bedingungslos immer wieder selbst auf, das Programm kommt zu keinem Ende.
  
-Experiment+---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (A1) Experiment: Countdown === 
  
 +Implementiere eine Methode, die einen Countdown ausgibt:
 +
 +<code>
 +4 ..... 3 ..... 2 ..... 1 ..... 0 
 +</code>
 +
 +**(a)** Zunächst iterativ, z.B. mit einer for-Schleife, in Java: ''public void countdown_iterativ (int start)''. Teste den Code - funktioniert dein Countdown?
 +
 +**(b)** Dann rekursiv anhand des folgenden Pseudocodes:
 +
 +<code>
 +countdown_rekursiv(int i):
 +  print(i + " .... ")
 +  countdown_rekursiv(i-1)
 +</code>
 +
 +Teste den Code. Was beobachtest du? Erläutere, was das Problem ist - kannst du es lösen?
 +
 +<WRAP center round important 60%>
 +Jede rekursive Funktion benötigt eine Fallunterscheidung in zwei Fälle:
 +  * **Rekursionsfall**: Im Rekursionsfall ruft sich die Funktion selbst auf
 +  * **Basisfall**: Im Basisfall ruft sich die Funktion nicht selbst auf, die Rekursion wird mit einem ''return''-Statement beendet.
 +</WRAP>
 +
 +**(c)** Passe deine rekursive Methode anhand des folgenden Pseudocodes: mit einer Fallunterscheidung an:
 +
 +<code>
 +countdown_rekursiv(int i):
 +  wenn i<1:
 +    return
 +  sonst: 
 +    print(i + " .... ")
 +    countdown_rekursiv(i-1)
 +</code>
  
  • faecher/informatik/oberstufe/algorithmen/rekursion/rekursionsschachteln/start.txt
  • Zuletzt geändert: 24.01.2024 11:37
  • von Marco Kuemmel