i

Übungen - Verarbeitung von Zahlen

Aufgabe 1 (Summen von natürlichen Zahlen)

In dieser Aufgabe geht es um die Berechnung von Summen von natürlichen Zahlen.

0
0+1
0+1+2
0+1+2+3
0+1+2+3+4
...

Hinweis: In ähnlicher Form hast du solche Summen bereits im Abschnitt zum Begrüßungsproblem betrachtet.

Ziel ist es, eine Funktion summe zu entwickeln, mit der man solche Summen bestimmen kann.

Signatur:
summe: Int -> Int
Beispiele:
summe 0 -> 0
summe 1 -> 1
summe 2 -> 3
summe 3 -> 6
...

(a) Im Rekursionsschritt reduziert man das Problem auf ein entsprechendes Problem in verkleinerter Form. Ergänze die Reduktionsregeln.

Rekursionsschritt (am Beispiel):

summe 5 -> ... (summe 4)

Rekursionsschritt (allgemein):

Falls n > 0 ist:
summe n -> ... 

(b) Im Rekursionsanfang gibt man die Lösung des Problems für einen Startwert direkt an.

Rekursionsanfang:

Falls n == 0:
summe n -> ... 

(c) Entwickle aus den Reduktionsregeln eine Funktionsdefinition für die Funktion summe und teste sie in der REPL.

Aufgabe 2 (lineares Wachstum)

Auf einem Konto befindet sich zu Beginn ein bestimmter Anfangsbetrag (z.B. 1000 €). Nach jedem Monat wird ein fester Betrag (z.B. 50 €) eingezahlt. Wie hoch ist der Kontostand nach einer vorgegebenen Anzahl von Monaten? Dieses Problem führt zu folgender Übergabe-Rückgabe-Situation:

Übergabe: 
- Anfangsbetrag: 1000 [€]
- Einzahlungsbetrag: 50 [€]
- Anzahl der Monate: 4
Rückgabe: 
- Kontostand nach Ablauf der Monate: 1200 [€]

(a) Mit der Funktion kontostand soll die Kapitalentwicklung auf dem Konto bestimmt werden. Ergänze die bereits begonnene Modellierung der Funktion kontostand.

Signatur:
kontostand: ...
Beispiele:
kontostand 1000 50 4 -> 1200
kontostand ...

(b) Ergänze die Reduktionsregeln.

Rekursionsschritt (am Beispiel):

kontostand 1000 50 5 -> (kontostand 1000 50 4) ...

Rekursionsanfang:

kontostand 1000 50 0 -> ...

(c) Entwickle aus den Reduktionsregeln eine Funktionsdefinition für die Funktion kontostand und teste sie in der REPL.

Aufgabe 3 (exponentielles Wachstum)

Du hast 10.000 € angespart und legst das Geld in einem Aktion-Depot an, bei dem es jährlich 5% Rendite gibt. Gesucht ist die Entwicklung des Depotbestandes. Zur Klärung dieser Frage betrachten wir die folgende, etwas verallgemeinerte Übergabe-Rückgabe-Situation:

Übergabe: 
- Anfangsbetrag: 10000 [€]
- Rendite in Prozent: 5 [%]
- Anzahl der Jahre: 1
Rückgabe: 
- Depotstand nach Ablauf der Jahre: 10500 [€]

(a) Mit der Funktion depotstand soll die Depotentwicklung bestimmt werden. Ergänze die bereits begonnene Modellierung der Funktion depotstand.

Signatur:
depotstand: ...
Beispiele:
depotstand 10000 5 1 -> 10500
depotstand ...

(b) Entwickle selbstständig geeignete Reduktionsregeln.

Rekursionsschritt (am Beispiel):

depotstand 10000 5 4 -> ... 

Rekursionsanfang:

depotstand 10000 5 0 -> ...

(c) Entwickle aus den Reduktionsregeln eine Funktionsdefinition für die Funktion depotstand und teste sie in der REPL.

Aufgabe 4 (Fibonacci-Zahlen)

Der Rechenmeister Fibonacci - der um 1200 in Pisa lebte - hat sich mit einer Zahlenfolge beschäftigt, die man mit einer Kaninchenvermehrung verdeutlichen kann:

Kaninchenvermehrung[1]

Die Kaninchenvermehrung erfolgt nach diesen Regeln:

  • Zu Beginn gibt es $1$ Kaninchenpaar.
  • Vom zweiten Lebensmonat an beginnt ein Kaninchenpaar sich fortzupflanzen.
  • Jedes Kaninchenpaar erzeugt ein weiteres Paar pro Monat.

Zur Bestimmung der Anzahl der Kaninchenpaare betrachten wir diese Übergabe-Rückgabe-Situation:

Übergabe: 
- Monat: 6
Rückgabe: 
- Anzahl der Kaninchenpaare zu Beginn des Monats: 8

(a) Mit der Funktion fibonacci soll die Entwicklung der Kaninchenpopulation bestimmt werden.

Signatur:
fibonacci: Int -> Int
Beispiele:
fibonacci 1 -> 1
fibonacci 2 -> 1
...
fibonacci 6 -> 8
...

(b) Erkläre die Reduktionsregeln. Erkläre dabei auch, warum man 2 Regeln für den Rekursionsanfang benötigt.

Rekursionsschritt (am Beispiel):

fibonacci 6 -> (fibonacci 5) + (fibonacci 4)

Rekursionsanfang:

fibonacci 1 -> 1
fibonacci 2 -> 1

(c) Entwickle aus den Reduktionsregeln eine Funktionsdefinition für die Funktion fibonacci und teste sie in der REPL.

Quellen

Suche

v
8.2.2.10.5
dev.inf-schule.de/deklarativ/fp_elm/elm_programme/rekursion/uebungen_zahlen
dev.inf-schule.de/8.2.2.10.5
dev.inf-schule.de/@/page/Lk83K9JABqDY1LD1

Rückmeldung geben