Programm verstehen, Funktion

Romolus

Mitglied
WIeder eine Übung, inder man das programm verstehen soll:

Java:
long hilfsfunktion(int x){
  long p =1;
  for ( int i =1; i <= x; i++){
    p *= i ;
  }
  return p;
}

double ex2() {
  double ret = 1;
  for (int i = 1; i < 50; i++) {
     ret += 1.  / hilfsfunktion(i);
  }
  return ret;
}

Erste Teil ist klar.
In einer Funktion wird die Faktorielle von x ausgerechnet.

Nun wird eine Funktion mit dem Typ double mit den Namen ex2 definiert. Diese Funktion hat keinen Parameter. Der Variablen ret vom Datentyp double wird der Anfangswert 1 zugewiesen.
Nun wird in der for-Schleife die Varibale int i mit den ANfangwert 1 deklariert. In der Schleife wird die Bedingung geprüft ob i < 50 ist. Bei jedem Durchgang wird i um 1 erhöht. Ist die Bedingung erfüllt wird
ret += 1. / hilfsfunktion(i);
Was bedeutet das? Mit hilfsfunktion(i) wird die erste Funktion für den Wert i aufgerufen. Aber was heißt 1. mit den Punkt?
 
Und falls du die Formel nicht kennst: Die zweite Funktion berechnet die Eulersche Konstante e = 2.718... = 1/0! + 1/1! + 1/2! +...

Allerdings ist das ein typisches Beispiel, wie man es nicht machen sollte: Die Fakultät wird in jedem Schritt immer wieder neu von vorn berechnet, obwohl es ja sehr einfach ist, 9! zu ermitteln, wenn man schon 8! vom letzten Schritt hat. Aber das Ganze soll ja auch nur der Veranschaulichung dienen.

Normalerweise würde man das so schreiben
Java:
double ex2() {
  long f = 1; 
  double ret = 1;
  for (int i = 1; i < 50; i++) {
     ret += 1.0  / f; 
     f = f * i;
  }
  return ret;
}
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben