Hallo,
Singemäß wäre das so:
void main(int, char**);
void recursive_function(int, int);
void recursive_function(int amount, int max_depth) {
int count = amount + 1;
if (count > max_depth) {
return;
}
printf("%i ", count);
recursive_function(count, max_depth);
}
void main(int argc, char** argv) {
recursive_function(0, 10);
return 0;
}
count ist hier eine lokale Variable, die auf dem Stack liegt und somit nur innerhalb der Funktion existiert. Ruft sich die Funktion selbst nochmal auf, entsteht ein neuer Stack Frame, auf dem dieselbe Variable aber mit anderem Wert liegt. Nach Verlassen der rekursiv aufgerufenen Funktion befindet sich das Programm wieder im urpsünglichen Aufruf, wo die Variable wieder ihren alten Wert besitzt.
Die Ausgabe des Programms (wenn der Formatstring für printf stimmt) ist also: 1 2 3 4 5 6 7 8 9 10
Gruß,
Dennis