i

Übungen

Übung 1

Du hast jetzt einige Probleme der Informatik und Mathematik kennengelernt, die man rekursiv lösen kann. Tatsächlich stößt man auch im Alltag ab und zu auf Rekursion und kann einige Alltagssituationen "rekursiv" lösen.
  1. Nenne Alltagssituationen, in denen du Rekursion schonmal begegnet bist. Denk dabei zum Beispiel an deinen Schulalltag oder deinen Alltag zuhause.
  2. Nenne Probleme aus dem Alltag, die man mit einer rekursiven Strategie lösen kann.

Übung 2

In Python können wir nicht nur Zahlen miteinander addieren, sondern auch Strings. Dabei ist die Summe zweier Strings die Aneinanderreihung oder Verkettung der beiden Strings. Dazu sagen wir auch Konkatenation.

Erneut schauen wir uns die Funktion zum Aufsummieren aller Elemente einer Liste an. Diesmal wollen wir allerdings keine Liste von Zahlen aufsummieren, sondern Strings. Klicke dich durch das Diagramm. Klicke dich durch die Funktion, bis sie einen Fehler wirft. Finde heraus wo der Fehler liegt und korrigiere ihn. Warum ist die ursprüngliche Implementierung falsch?

Übung 3

Am Anfang der Lernstrecke hast du das Diagramm für die quersumme Funktion kennengelernt. Nun wollen wir die Funktion einmal programmieren.

Beispiele:

  • quersumme(1) = 1
  • quersumme(12) = 3
  • quersumme(123) = 6
  • quersumme(1234) = 10

Überlege dir zunächst die Antworten auf die folgenden zwei Fragen. Hinweis: Eventuell sind die dabei die Operationen Modulo (%) und Division (//) hilfreich.

  • Wie kommst du an die einzelnen Ziffern der Zahl?
  • Wie verkürzt du die Zahl um eine Ziffer?

Schreibe nun mit diesen Überlegungen die Funktion.

Übung 4

Das Collatz-Problem, auch bekannt als (3n + 1)-Vermutung, ist ein faszinierendes ungelöstes Problem in der Mathematik. Die Idee ist, eine Folge von Zahlen zu generieren, beginnend mit einer beliebigen positiven ganzen Zahl n:

  • Wenn n gerade ist, ist die nächste Zahl n / 2.
  • Wenn n ungerade ist, ist die nächste Zahl 3n + 1.

Die Vermutung besagt, dass diese Folge für jede positive Startzahl n irgendwann die Zahl 1 erreicht.

Schreibe die rekursive Funktion collatz_steps(n), die für die gegebene Startzahl n die Anzahl an Schritten (engl. steps) berechnet, bis die Sequenz bei 1 angelangt ist. Ersetze dafür die Fragezeichen mit Python Code. Wir legen fest, dass die Funktion nie mit 0 aufgerufen wird, diesen Fall musst du also nicht beachten.

Beispiele:

  • collatz_steps(1) = 0
  • collatz_steps(2) = 1, Sequenz: 2 $\to$ 1
  • collatz_steps(3) = 7, Sequenz: 3 $\to$ 10 $\to$ 5 $\to$ 16 $\to$ 8 $\to$ 4 $\to$ 2 $\to$ 1
  • collatz_steps(4) = 2, Sequenz: 4 $\to$ 2 $\to$ 1
  • collatz_steps(5) = 5, Sequenz: 5 $\to$ 16 $\to$ 8 $\to$ 4 $\to$ 2 $\to$ 1
Hinweis: Obwohl die Collatz-Vermutung für alle bisher getesteten Zahlen zutrifft, ist sie mathematisch noch nicht bewiesen. Das bedeutet, es gibt theoretisch die Möglichkeit (wenn auch sehr unwahrscheinlich), dass für eine bestimmte sehr große Zahl die Folge nicht bei 1 endet. In einem solchen Fall würde die rekursive Funktion theoretisch unendlich weiterlaufen und schließlich zu einem Fehler führen, da Python eine maximale Rekursionstiefe hat. Für die üblichen Testzahlen ist das aber kein Problem.

Übung 5

Schreibe nun die rekursive Funktion collatz_seq(n), die für die gegebene Zahl n die Sequenz (engl. sequence, kurz seq) aus Zahlen in Form einer Liste berechnet und zurückgibt. Wir legen wieder fest, dass die Funktion nie mit 0 aufgerufen wird, diesen Fall musst du also nicht beachten.

Beispiele:

  • collatz_sequence(1) = [1]
  • collatz_sequence(2) = [2, 1]
  • collatz_sequence(3) = [3, 10, 5, 16, 8, 4, 2, 1]
  • collatz_sequence(4) = [4, 2, 1]
  • collatz_sequence(5) = [5, 16, 8, 4, 2, 1]

Übung 6

Schreibe eine rekursive Funktion is_Exp_2(n), die für eine gegebene natürliche Zahl n überprüft, ob es eine natürliche Zahl x gibt, sodass $2^x = n$. Anders gesagt soll überprüft werden, ob n eine Zweierpotenz ist. Beispiele:
  • is_Exp_2(1) = True
  • is_Exp_2(2) = True
  • is_Exp_2(3) = False
  • is_Exp_2(4) = True
  • is_Exp_2(5) = False
  • is_Exp_2(8) = True
Tipp

Eventuell benötigst du zwei Basisfälle.

Suche

v
100.140.1.1.7 Übungen
Kopieren durch Anklicken

Rückmeldung geben