1df916399e | ||
---|---|---|
.. | ||
solution | ||
rabbit.jpg | ||
readme.md |
readme.md
Was hoppelt den da?
📆 Fällig: ---- 📆 Musterlösung
Nach Ihrer umfassenden Tätigkeit im Scalper-Sektor sind Sie komplett erschöpft und brauchen etwas Urlaub. Also buchen Sie von dem Geld, das Sie in den letzten Monaten verdient haben, einen schönen Urlaub in den Alpen. Von Ihrem Zimmer haben Sie einen wunderbaren Blick auf die Wiesen und natürlich die Berge. Das einzige Problem: Es gibt kein Internet und damit entfallen die ganzen schönen Online-Spiele und das Netflixen komplett. Sie tun also das, was man in solch einer Situation macht und schauen aus dem Fenster.
Sie sehen ein Kaninchen, das freudig über die Wiese hoppelt. "Ach, wie schön die Natur ist" denken Sie und seufzen entspannt.
Während Sie so den Kaninchen zuschauen, denken Sie an Fibonacci und den Biologieunterricht in der Schule. Dort haben Sie gelernt, dass die Größe einer Kaninchenpopulation - solange man keine davon erlegt und isst - der Folge der Fibonacci-Zahlen folgt. Da sowieso nichts zu tun ist, setzen Sie sich in und programmieren in Clojure ein entsprechendes, kleines Skript.
Die Fibonacci-Zahlen sind rekursiv definiert als:
- F_0 = 0
- F_1 = 1
- F_n = F_{n-1} + F_{n-2}
Damit ist der Anfang der Fibonacci-Folge:
n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
F_n | 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 |
Schreiben Sie ein Clojure-Programm (kaninchen.clj
), das Fibonacci-Zahlen berechnet und ausgibt.
- Es soll eine Funktion
fibs
geben, die für den Parametern
die dazugehörige Fibonacci-Zahlen bisn
liefert, also z.B.(fibs 5)
liefert(0 1 1 2 3 5)
. - Es soll eine Funktion
fib
geben, die für den Parametern
die Fibonacci-Zahl an der Stellen
liefert, also z.B.(fib 5)
liefert5
. - Schreiben Sie eine Funktion
karnickel
welche die Anzahl der Kaninchen nach 14 Generationen ausgibt und die Entwicklung der Population als Reihe von Zahlen.
Nach 14 Generationen haben wir 377 Kaninchen
Die Population entwickelt sich so: (0 1 1 2 3 5 8 13 21 34 55 89 144 233 377)
- Verwenden Sie bitte auf jeden Fall eine Tail-Recursion mit
loop
undrecur
. - Speichern Sie die Anzahl der Generationen in einem Symbol.
- Sichern Sie die Funktionen
fib
undfibs
durch eine Vorbedingung dagegen ab, mit negativen Werten aufgerufen zu werden. - Stellen Sie durch eine Nachbedingung bei
fib
sicher, dass das Ergebnis nicht negativ ist.