HI
erstmal danke! also es sollte schon rekursiv sein!
Kurz was zu rekursiv:
Funktionen oder Prozeduren heißen rekursiv (rekursiv= zurückgehend bis zu bekannten Werten), wenn sie sich im Verlauf ihrer Abarbeitung einmal oder auch mehrfach selber aufrufen. Damit es dabei nicht zu so genannten Endlosschleifen kommt, muss jede Rekursion eine Abbruchbedingung (bekannter Fall) enthalten, die auch mit Sicherheit erreicht wird.
Und nun die Aufgabe + Textinfos!
Berechnung von Spargeldern mit festem Zinssatz
Bei der Anlage von Geld bei einer Bank oder Sparkasse kann man sein Geld mit einem festen Zinssatz anlegen. Die Zinsen eines abgelaufenen Jahres werden am Ende des Jahres dem Konto gutgeschrieben und im nächsten Jahr mit verzinst.
Die Berechnung des Gewinns bei einem solchen Konto wollen wir nun rekursiv lösen. Dazu überlegen wir uns wieder unsere beiden Schritte:
- Wenn ich mein Geld sofort wieder abhebe (Laufzeit= 0), erhalte ich als Guthaben nur das Geld, das ich eingezahlt habe. Dies wäre der Rekursionsabbruch.
- In einem beliebigen Jahr erhalte ich Zinsen für das Guthaben, das sich bis zum Ende des vorhergehenden Jahres angesammelt hat. Die Formel dafür würde lauten: Zinsen= Guthaben*Zinssatz . Das neue Guthaben würde sich dann aus der Summe des alten Guthabens und den Zinsen berechnen, also
-- Guthaben = Guthaben + Zinsen bzw.
-- Guthaben = Guthaben + Guthaben * Zinsen
Hier könnte man die Variable Guthaben ausklammern, die Formel würde dann so lauten:
-- Guthaben = Guthaben * (1+Zinssatz)
Daraus ergibt sich folgender Quelltext:
function Guthaben (Einlage,Zinssatz:real; Laufzeit:integer): real;
begin
if Laufzeit = 0
then Guthaben:=Einlage
else Guthaben:=Guthaben(Einlage,Zinssatz,Laufzeit-1)*(1+Zinssatz);
end;
Auch hier wird bei positiven Laufzeiten die Abbruchbedingung mit Sicherheit erreicht, bei Eingabe einer negativen Laufzeit müsste das aufrufende Programm entsprechen auf diesen Wert reagieren.
So, das ist der komplette Text zur Aufgabe ...
Eure Hilfen zur lösung werde ich mir jetzt mal angucken und hoffe, das ihr mit (noch) weiterhelfen werdet!
M.f.G. Airbone