Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
gf_informatik:suchen_und_sortieren:binaersuche [2026-05-02 12:23] – [Aufgabe B5: Zeitmessung mit linearer und binärer Suche] hofgf_informatik:suchen_und_sortieren:binaersuche [2026-05-02 12:30] (aktuell) – [Aufgabe B8: Rekursion (optional)] hof
Zeile 315: Zeile 315:
 ++++ ++++
 </nodisp> </nodisp>
- 
  
 #### Aufgabe B8: Rekursion (optional) #### Aufgabe B8: Rekursion (optional)
 +
 +<bottom-exercise id="b8" timeout="5" zip="https://bottom.ch/ksr/1m/null79.py.zip" showsolution>
 +<div slot="prompt">
 Bei der binären Suche gehen wir ja wie folgt vor: Bei der binären Suche gehen wir ja wie folgt vor:
-  - Index in der Mitte des Suchintervalls wählen. +<ul> 
-  Element in der Mitte auslesen. +  <li>Index in der Mitte des Suchintervalls wählen. 
-  Ist `element == suchesind wir fertig. +  <li>Element in der Mitte auslesen. 
-  Andernfalls wiederholen wir die Suche mit einem kleineren Teilintervall (zurück zu Schritt 1): +  <li>Ist <code>element == suche</code> sind wir fertig. 
-    Ist `suche < element`, so ist das neue Suchintervall die linke Hälfte. +  <li>Andernfalls wiederholen wir die Suche mit einem kleineren Teilintervall (zurück zu Schritt 1): 
-    Andernfalls ist `element < suche`, das neue Suchintervall ist die rechte Hälfte.+    <ul> 
 +      <li>Ist <code>suche &lt; element</code>, so ist das neue Suchintervall die linke Hälfte. 
 +      <li>Andernfalls ist <code>element &lt; suche</code>, das neue Suchintervall ist die rechte Hälfte. 
 +    </ul> 
 +</ul>
  
-Schreibe eine neue Funktion, `binaere_suche_rekursiv(l, suche, links, rechts)`. Die Funktion codiert die obigen Schritte statt einer `while`-Schleife soll die Funktion sich im Schritt 4 selber wieder aufrufen. Dieses Verfahren heisst **Rekursion**. Was sind die Startparameter für `linksund `rechts`?+<p>Schreibe eine neue Funktion, <code>binaere_suche_rekursiv(l, suche, links, rechts)</code>. Die Funktion codiert die obigen Schritte &ndash; statt einer <code>while</code>-Schleife soll die Funktion sich im Schritt 4 selber wieder aufrufen. Dieses Verfahren heisst <strong>Rekursion</strong>. Was sind die Startparameter für <code>links</code> und <code>rechts</code>?
  
-Rekursion eignet sich für viele Probleme, die sich mit _Divide Conquer_ (_Teile Herrsche_) lösen lassen: Probleme, die wir für den trivialen Fall mit einem Element lösen können, und die wir effizient von einem grösseren in ein kleineres Problem überführen können.+<p>Rekursion eignet sich für viele Probleme, die sich mit <em>Divide &amp; Conquer</em> (<em>Teile &amp; Herrsche</em>) lösen lassen: Probleme, die wir für den trivialen Fall mit einem Element lösen können, und die wir effizient von einem grösseren in ein kleineres Problem überführen können. 
 +</div> 
 +<template data-type="starter"> 
 +from null79 import names, numbers 
 + 
 +def binaere_suche_rekursiv(l, suche, links=None, rechts=None): 
 +    """Gibt den Index des gesuchten Elements in l zurück, 
 +       None, wenn das Element nicht existiert.""" 
 +</template> 
 +<template data-type="test"> 
 +assert binaere_suche_rekursiv(names, 'Lyanna', links=0, rechts=len(names)) >= 0 
 +assert binaere_suche_rekursiv(names, 'Lyanna') >= 0, "Aufruf ohne links / rechts sollte auch funktionieren" 
 +</template> 
 +<template data-type="solution"> 
 +from null79 import names, numbers
  
-<nodisp 1> 
-++++Lösung| 
-<bottom-editor timeout="180" zip="https://bottom.ch/ksr/1m/null79.py.zip"> 
 def binaere_suche_rekursiv(l, suche, links=None, rechts=None): def binaere_suche_rekursiv(l, suche, links=None, rechts=None):
     """Gibt den Index des gesuchten Elements in l zurück,     """Gibt den Index des gesuchten Elements in l zurück,
Zeile 361: Zeile 378:
 from null79 import names, numbers from null79 import names, numbers
 print(f'Die Telefonummer von Lyanna ist {numbers[binaere_suche_rekursiv(names, "Lyanna")]}.') print(f'Die Telefonummer von Lyanna ist {numbers[binaere_suche_rekursiv(names, "Lyanna")]}.')
-</bottom-editor> +</template
-++++ +</bottom-exercise> 
-</nodisp>+ 
  
  
  • gf_informatik/suchen_und_sortieren/binaersuche.1777724623.txt.gz
  • Zuletzt geändert: 2026-05-02 12:23
  • von hof