C-Programmierung

Stapelbeispiel

Stapelmaschine | | Rekursion

Ein einfaches Beispiel anhand der geometrischen Reihe:

$ \displaystyle{ \sum_{n=0}^\infty c^n = \frac{1}{1-c} } $
double geo_sum(double c)
{
   return(1.0/(1.0-c));
}

s=geo_sum(1.0/2);

Beim Aufruf der Funktion geo_sum mit dem Parameter 0.5 geschieht folgendes:

  1. Evaluation des Argumentausdrucks 1.0/2 zu 0.5 mit Hilfe der Rechenregister
  2. Ablegen des Parameterwerts 0.5 auf dem Stapel
  3. Ablegen der RĂĽcksprungadresse adr auf dem Stapel
  4. Der Stapel enthält jetzt zwei Einträge: 0.5 adr
  5. Sprung an die Adresse von geo_sum
    1. Laden des Parameterwertes 0.5 in Register
    2. AusfĂĽhrung der Berechnung von 1/(1–0.5) mit Hilfe der Rechenregister
    3. Entfernen des Parameters 0.5 vom Stapel
    4. Entfernen der RĂĽcksprungadresse adr vom Stapel
    5. Ablegen des Funktionswertes 2.0 auf dem Stapel
    6. Der Stapel enthält jetzt einen Eintrag: 2.0
    7. RĂĽcksprung an die Adresse adr
  6. Abholen des Funktionswertes vom Stapel
  7. Speichern des Funktionswertes 2.0 in Variable s
  8. Der Stapel enthält jetzt keinen Eintrag mehr: leer


Stapelmaschine | | Rekursion

Options: