Grundlegendes zur Rekursion am Beispiel einer Bierflasche

Ich übe selbst Rekursion in C und habe dieses Beispiel online gefunden. Eines verstehe ich jedoch nicht.

void singSongFor(int numberOfBottles)
{
if (numberOfBottles == 0) {
    printf("There are simply no more bottles of beer on the wall.\n\n");
} 
else {
    printf("%d bottles of beer on the wall. %d bottles of beer.\n",
           numberOfBottles, numberOfBottles);
    int oneFewer = numberOfBottles - 1;
    printf("Take one down, pass it around, %d bottles of beer on the wall.\n\n",
           oneFewer);
    singSongFor(oneFewer); // This function calls itself!

    // Print a message just before the function ends
    printf("Put a bottle in the recycling, %d empty bottles in the bin.\n",
             numberOfBottles);
   }
}    

Dann benutze ich eine Hauptmethode als solche:

 int main(int argc, const char * argv[])
{
  singSongFor(4);
  return 0;
}

Und die Ausgabe ist als solche:

4 Flaschen Bier an der Wand. 4 Flaschen Bier. Nimm eine runter, gib sie herum, 3 Flaschen Bier an der Wand.

3 Flaschen Bier an der Wand. 3 Flaschen Bier. Nimm eine runter, gib sie herum, 2 Flaschen Bier an der Wand.

2 Flaschen Bier an der Wand. 2 Flaschen Bier. Nimm eine runter, gib sie herum, 1 Flasche Bier an der Wand.

1 Flaschen Bier an der Wand. 1 flaschen bier. Nimm eine runter, gib sie herum, 0 Flaschen Bier an der Wand.

An der Wand hängen einfach keine Bierflaschen mehr.

Stellen Sie eine Flasche in den Recyclingbehälter, 1 leere Flasche in den Mülleimer.

Stellen Sie eine Flasche ins Recycling, 2 leere Flaschen in den Mülleimer.

Stellen Sie eine Flasche ins Recycling, 3 leere Flaschen in den Mülleimer.

Stellen Sie eine Flasche in den Recyclingbehälter, 4 leere Flaschen in den Mülleimer.

Ich verstehe den ersten Teil sehr gut, bis ich zu "Es sind einfach keine Flaschen Bier mehr an der Wand. Ich verstehe danach nicht, wie die variable Anzahl der Flaschen von 1 auf 4 erhöht wird.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage