Übungen: Rekursive Funktionsaufrufe
Aufgabe 1: Mathematische Folgen
In der Mathematik gibt es einige Folgen, die rekursiv definiert werden können. Zwei wollen wir uns hier anschauen.
Die häufig in der Natur und auch Architektur wiederzufindende Fibonacci-Folge ist definiert als:
$F(n)=
\begin{cases}
f_0 = 0 \\
f_1 = 1 \\
f_n = f_{n-1} + f_{n-2} \quad \text{für } n \geq 2
\end{cases}$
Die allgemeine Heron-Folge kann zur Approximation von Wurzeln genutzt werden.
Die folgende Definition nähert sich mit höherem $n$ stückweise dem Wert $\sqrt{2}$ an:
$H(n)=
\begin{cases}
x_0 = 1, \\
x_{n+1} = \frac{1}{2} \left(x_n + \frac{2}{x_n}\right) \quad \text{für } n \geq 0
\end{cases}$
(a) Implementiere die Funktion fibonacci
, die dir für ein übergebenes $n$ die $n$-te Fibonacci-Zahl zurückgibt.
Zum Testen: Die ersten Fibonacci-Zahlen lauten: $0, 1, 1, 2, 3, 5, 8, 13, 21$
(b) Implementiere die Funktion heron
, die dir für ein übergebenes $n$ die $n$-te Heron-Zahl zur Annäherung an
$\sqrt{2}$ zurückgibt.
Zum Testen: Die Zahlen nähern sich immer weiter dem Wert: $1.4142135623730950488016887...$
(c) Schreibe eine Funktion makeList
, die für eine übergebene Funktion (z.B. fibonacci
oder heron
)
eine Liste der jeweiligen Folge bis zur $n$-ten Zahl zurückgibt.
Zum Beispiel: $(list\ 0\ 1\ 1\ 2\ 3)$ für die Fibonacci-Folge bis $n=4$
Aufgabe 2: Gehaltserhöhung
Ein Team verwaltet seine Mitarbeitenden und deren Jahreseinkommen in folgender Form:
(define-record mitarbeitende
make-mitarbeitende
(mitarbeitende-name string)
(mitarbeitende-einstellung natural)
(mitarbeitende-gehalt natural))
(define listteam
(list
(make-mitarbeitende "Aaron" 2023 39200)
(make-mitarbeitende "Ashley" 2023 39200)
(make-mitarbeitende "Miguel" 2021 49100)
(make-mitarbeitende "Paco" 2020 47500)
(make-mitarbeitende "Aitana" 2019 54200)
(make-mitarbeitende "Cosme" 2019 54200)))
(a) Bestimme das aktuelle Durchschnittseinkommen des Teams.
Das Team hat intern eine regelmäßige Gehaltserhöhung beschlossen. Jedes Jahr wird das Gehalt aller Mitarbeitenden um 5 % angehoben.
(b) Bestimme, in wie vielen Jahren das Durchschnittseinkommen der Mitarbeitenden bei gleichbleibenden Erhöhungen 50.000 €, 60.000 €, 70.000 € und 100.000 € überschreitet.