Sie sind auf Seite 1von 1

Prof. Dr. Thomas Wick, M.Sc. Philipp Thiele Hannover, 14.

November 2018

3. Übung zu Algorithmisches Programmieren

Programmieraufgabe 3.1 [Summation]


Die Partialsummen der harmonischen Reihe sind gegeben durch
n
X 1 1 1 1
s := = + + ... + .
i 1 2 n
i=1

Schreiben Sie ein Programm, welches in zwei passenden Funktionen die Summe einmal vorwärts,
    
1 1 1 1
sv := + + + ... + ,
1 2 3 n

und einmal rückwärts,


    
1 1 1 1
sr := + ... + + + ,
1 n−2 n−1 n

berechnet. Lassen Sie sich sv , sr und |sv − sr | mit 15 Nachkommastellen für n = 10k mit k = 1, . . . , 7 auf
dem Bildschirm ausgeben. Verwenden Sie zunächst ausschließlich float-Variablen. Was fällt auf?

Erweitern/Überarbeiten Sie anschließend ihr Programm, sodass es insgesamt die vier folgenden Funktionen zur
Verfügung stellt:

• sum_forward_float und sum_backward_float,

• sum_forward_double und sum_backward_double.

Vergleichen und interpretieren Sie die Ergebnisse erneut. (Testen Sie auch für sehr große n ∈ N!)
Programmieraufgabe 3.2 [Fibonacci Folge]
Die Fibonacci-Folge ist durch die folgende rekursive Vorschrift definiert:

f0 := 1, f1 := 1, und fn := fn−1 + fn−2 , n > 1.

Implementieren Sie die Fibonacci-Folge

(a) iterativ durch eine Funktion fibonacci_iter,

(b) rekursiv durch eine Funktion fibonacci_rec.

Testen Sie ihr Programm, indem Sie sich die ersten 21 Folgenglieder der Fibonacci-Folge ausgeben lassen.
Erweitern Sie anschließend ihre Implementationen (iterativ und rekursiv) um eine Ausgabe von n und fn auf
dem Bildschirm, direkt nachdem das n-te Folgenglied berechnet wurde. Vergleichen Sie die Ausgabe ihrer
iterativen und rekursiven Implementation.