zinsen rekursiv/iterativ

  • Themenstarter Themenstarter k.
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
K

k.

Gast
hallo,
folgende aufgabenstellung:
am anfang des jahres wird jeweils 1000 euro auf das konto eingezahlt. zinsen am 31.12. sind 5%. diese zinsen werden wieder angelegt. am 31.12.04 beträgt das guthaben also 1.05*1000 = 1050, am 31.12.05 2152,50.

jetzt soll ich eine linear rekursive funktion schreiben, die das guthaben nach n Perioden ermittelt.
folgendermaßen siehts bei mir aus
Code:
public static double Zinsberechnung_rek(double Guthaben, int Perioden)
	{
		if (Perioden <= 0 )
				return Guthaben;
		
		Guthaben += 1000; // Einzahlung am Jahresbeginn
		Guthaben *= 1.05; // Zins am Jahresende
		
		return Zinsberechnung_rek( Guthaben, Perioden - 1);
	}
ich will als parameter aber nur die perioden....
 
mach eine private classenvariable
#edit sry, falsch verstanden:

mach eine ansprungmethode in der art:
fangAn(perioden)
{
return machWasDuWillst(1000,perioden);
}
 
dann arbeitete nur mit dem Rückgabewert, rufe erst n-mal die Operation auf,
gib bei <= 0 einen Startwert zurück und erhöhe den bei jedem return
 
So sollte es auch gehen ....

Code:
Class Recursiv {
// Irgendwo ne main

Static double guthaben = 1000d; // Startguthaben

public static double Zinsberechnung_rek(int Perioden)
   {
      if (Perioden <= 0 ) // (oder = 0 ? )
            return Guthaben;
      
      Guthaben += 1000; // Einzahlung am Jahresbeginn
      Guthaben *= 1.05; // Zins am Jahresende
      
      return Guthaben + Zinsberechnung_rek( Perioden - 1);
   } 
}

(Glaub ich ...) 😀
 
danke, ich machs mit der ansprungmethode;

das beispiel funktioniert so nicht, da 1.) guthaben nicht definiert ist und 2.) dann nur das Guthaben einer Einzahlung+Zinsen dazu dazugezählt werden würde 😉
 
ok, guthaben ist definiert (hab ich übersehn; is aber auch klein geschrieben, also Guthaben ist dann nicht definiert 😉)
klappt aber trotzdem nicht so 😛
 
Kleinlich sei ... 😀

Code:
static double Guthaben = 0; // Startguthaben

		public static double Zinsberechnung_rek(int Perioden)
		   {
		         if (Perioden == 1 ) 
		            return Guthaben;
		     
		      Guthaben += 1000; // Einzahlung am Jahresbeginn
		      Guthaben *= 1.05; // Zins am Jahresende
		     
		      return Guthaben + Zinsberechnung_rek( Perioden - 1);
		   }
 
lästerst du nur oder hast du Fragen zu dem Beispiel?
(außer 'bitte korrekt posten', obwohl darauf vielleicht auch jemand antwortet 😉 )

viel eleganter wäre, das ganze ohne Exemplarvariable zu lösen

@jPat: wieso postest du nun schon mehrere Versionen, ohne sie einmal zu testen?
 
Code:
static double Guthaben = 0; // Startguthaben

		public static double Zinsberechnung_rek(int Perioden)
		   {
		      if (Perioden == 0 ) 
		            return Guthaben;
		     
		      Guthaben += 1000; // Einzahlung am Jahresbeginn
		      Guthaben *= 1.05; // Zins am Jahresende
		     
		      return Zinsberechnung_rek( Perioden - 1);
		   }
😎
 
grummel, scheint zu stimmen 😉

aber wehe man ruft die Operation zweimal auf :bae:, oder gar mit Periode -1
 
führ das mal mit einigen vielen perioden aus 😉
BOOOM macht der speicher 😀

#edit 1:
einfache mathematische formel:
Code:
public static double Zinsberechnung(int Perioden) // geht einfacher und ist ressourcenschonender
{
    return Math.pow( 1.05, perioden ) * 1000;
}

#edit 2:
passt zwar nicht hier rein, weil iterativ oder rekursiv, aber naja, wollt mal meinen senf dazu geben :lol:
 
:applaus:
Ach, dann fragt es doch einfach in einer if - Anweisung ab ...
Es ging nur um die Funktionalität, ich erhebe keinen Anspruch auf das Copyright 😀 , daher könnt ihr mit der Funktion machen, was ihr wollt :lol: .

Ist eh Käse das in einer statischen Art und Weise zu implementieren, aber du hast ja so angefangen, und ich wollte nicht, das du jar nischt mehr verstehst. :wink:
 
mika.fhdw hat gesagt.:
führ das mal mit einigen vielen perioden aus 😉
BOOOM macht der speicher 😀

#edit 1:
einfache mathematische formel:
Code:
public static double Zinsberechnung(int Perioden) // geht einfacher und ist ressourcenschonender
{
    return Math.pow( 1.05, perioden ) * 1000;
}

#edit 2:
passt zwar nicht hier rein, weil iterativ oder rekursiv, aber naja, wollt mal meinen senf dazu geben :lol:

Siehe aufgabenstellung :gaen:

Mit welchen werten rechnest du denn?? 100, 1000 , 10000, Viel spaß beim Sparen !! :lol:

in 10.000 Jahren haben deine for(int i = 0; i<10000;i++) System.out.print("Ur"); Enkel einen schönen betrag auf der Bank .... 😀
 
i+= :?:

Wie lange leben die Leute dann?

Wann / Wie bekommen sie ihre kinder?

Also, wenn geklont wird , kann man schon jedes Jahr eine neue Generation erzeugen .... :wink:

Bitte um Vorschläge :bae:
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben