|
|
||
|---|---|---|
| .. | ||
| 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
fibsgeben, die für den Parameterndie dazugehörige Fibonacci-Zahlen bisnliefert, also z.B.(fibs 5)liefert(0 1 1 2 3 5). - Es soll eine Funktion
fibgeben, die für den Parameterndie Fibonacci-Zahl an der Stellenliefert, also z.B.(fib 5)liefert5. - Schreiben Sie eine Funktion
karnickelwelche 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
loopundrecur. - Speichern Sie die Anzahl der Generationen in einem Symbol.
- Sichern Sie die Funktionen
fibundfibsdurch eine Vorbedingung dagegen ab, mit negativen Werten aufgerufen zu werden. - Stellen Sie durch eine Nachbedingung bei
fibsicher, dass das Ergebnis nicht negativ ist.