Rekursion mit Durchreichen von Ergebnissen

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Rekursion mit Durchreichen von Ergebnissen
https://www2.cs.fau.de/teaching/WS2009/AuD/organisation/oldexams/secure/09-02-19_klausur.pdf

Hallo,
ich habe zur Aufgabe 5b eine Frage:
Wie lässt es sich erschließen, dass bei dem Methodenkopf

private static int lin(int a, int b, int c, int steps){ }

a dem f(n-3) entspricht, b dem f(n-2) und c dem f(n-1)?


Hast du die Loesung hier schon gesehen? Ist das nicht ausfuehrlich genug?


Ja ich habe die schon gesehen.
Ich verstehe diesen Schritt nicht: f(0) → f(n - 3)
Das mit den Basisfällen habe ich schon verstanden.


Der rekursive Abstieg funktioniert ja so, dass du aus den drei übergebenen Zwischenergebnissen das nächste berechnest und dann weiter absteigst.
Die Ergebnisse der Basisfälle 0, 1 und 2 werden hierbei beim initialen Aufruf in f übergeben und zwar so dass:
a = 1 = f(0)
b = 2 = f(1)
c = 3 = f(2)

Das Zwischenergebnis, dass jetzt bei einem rekursiven Abstieg als nächstes berechnet wird ist f(3). Dafür benötigt man laut Angabe f(n-3), f(n-2) und f(n-1), also für n = 3, f(0), f(1), f(2).
f(0) ist aber gleich a, also wird beim initialen Aufruf f(n-3) als Parameter a übergeben und so solltest du es natürlich auch in deiner Implementierung handhaben.

Hilft das?


Ja das hilft sehr. Danke :slight_smile: