[C++] Rekursion

el guapo

Lt. Commander
Registriert
Feb. 2002
Beiträge
1.327
Rekursion

Ist der im unten angegebenen Quelltext (in der Klasse Sparkonto) in der Methode getGuthabenRekursiv bzw. berechneZinsen implementierte wirklich rekursiv? Irgendwie hab ich da meine Zweifel. Die Zeile return (berechneZinsen(einlage * (1 + zinssatz), --zinsjahre)); ist übrigens vorgegeben, ich brauchte nur ne passende Abbruchbedingung.

Code:
public class Sparkonto {
  double einlage;
  double zinssatz;

  public Sparkonto() {
  }

  public Sparkonto(double einlage, double zinssatz){
    this.einlage = einlage;
    this.zinssatz = zinssatz;
  }

  public double getGuthabenPotenz (int zinsjahre) {
    einlage = einlage * Math.pow(1 + zinssatz, zinsjahre);
    return einlage;
  }

  public double getGuthabenIterativ (int zinsjahre) {
    for(int temp = zinsjahre; temp == 0; --temp) {
      einlage = einlage + (zinssatz / einlage);
    }
    return einlage;
  }

  public double getGuthabenRekursiv (int zinsjahre) {
    berechneZinsen(einlage, zinsjahre);
    return einlage;
  }

  private double berechneZinsen (double einlage, int zinsjahre) {
    if (zinsjahre > 0)
      return (berechneZinsen(einlage * (1 + zinssatz), --zinsjahre));
    return einlage;
  }

  public double getZinssatz (byte zinssatz) {
    return zinssatz;
  }

  public double setZinssatz (byte zinssatz) {
    zinssatz = zinssatz;
    return zinssatz;
  }

}
 
Code:
  private double berechneZinsen (double einlage, int zinsjahre) {
    if (zinsjahre > 0)
      return (berechneZinsen(einlage * (1 + zinssatz), --zinsjahre));
    return einlage;
  }

die Rückgabe-Variable muss doch wo gespeichert werden !? du berechnest zwar was, aber das Resultat (mit return) wird nirgends verwertet :rolleyes::

das müsste ja zB so aussehen:
Code:
  private double berechneZinsen (double einlage, int zinsjahre) {
    while (zinsjahre) {
       einlage = berechneZinsen(einlage * (1 + zinssatz), --zinsjahre));
    }
    return einlage;
  }
 
Zuletzt bearbeitet:
Zurück
Oben