i

Fachkonzept

Als nächstes wollen wir uns ein weiteres mathematisches Problem mit interessanten eigenschaften anschauen: die Fibonacci-Reihe.

Aufgabe 3

Die Fibonacci-Folge ist rekursiv definiert durch:
  • Erste Fibonacci-Zahl: fib(0) = 0
  • Zweite Fibonacci-Zahl: fib(1) = 1
  • n+1-te Fibonacci-Zahl: fib(n) = fib(n-1) + fib(n-2) für n > 1

Das hießt die n+1-te Fibonacci-Zahl ist die Summe der beiden vorherigen Fibonacci-Zahlen. Schau dir die folgenden Beispiele an und vergleiche sie mit der Fakultät. Was ist diesmal anders in Bezug auf die beiden Bausteine der Rekursion.

Beispiele:

  • fib(2) = fib(1) + fib(0) = 1 + 0 = 1
  • fib(3) = fib(2) + fib(1) = fib(1) + fib(0) + 1 = 1 + 0 + 1 = 2
  • fib(4) = fib(3) + fib(2) = fib(2) + fib(1) + fib(1) + fib(0) = fib(1) + fib(0) + 1 + 0 + 1 = 1 + 0 + 1 + 1 = 3
Erklärung

Wir sehen also: eine Funktion kann auch mehr als einen rekursiven Aufrufe haben. Rekursive Funktionen mit maximal einem rekursiven Aufruf nennen wir "linear rekursiv", solche mit zwei rekursiven Aufrufen, nennen wir "binär rekursiv". Außerdem fällt auf, dass die Fibonacci-Funktion zwei Basisfälle hat, also zwei Instanzen des Problems, die keinen rekursiven Aufruf erfordern. Das liegt daran, wie die Fibonacci-Zahlen definiert sind.

Aufgabe 4

Versuche jetzt, die Fibonacci Funktion in Python zu schreiben. Denk dabei daran was dir bei der letzten Aufgabe aufgefallen ist.

Aufgabe 5

Die Fibonacci Funktion hat noch eine weitere interessante Eigenschaft. Gib die Funktion im RecursionTutor ein und schaue dir an, wie das Diagramm aussieht.
  1. Welche Unterschiede fallen dir zu den Diagrammen davor auf?
  2. Spielt es eine Rolle, in welcher Reihenfolge du die Knoten anklickst?
  3. Wo endet jeweils der rekursive Abstieg und wo beginnt der rekursive Aufstieg?
Erklärung

Die rekursiven Aufrufe bei der Fibonacci Funktion sind unabhängig voneinander und können deshalb in beliebiger Reihenfolge ausgeführt werden.

Suche

v
100.140.2.2.1.3 Fachkonzept
Kopieren durch Anklicken

Rückmeldung geben