Przepełnienie stosu spowodowane funkcją rekurencyjną
Będąc początkującym programistą C ++ i architekturą systemów komputerowych, wciąż uczę się podstaw języka C ++. Wczoraj czytałem o funkcji rekursywnej, więc postanowiłem napisać własną, oto co napisałem: (bardzo podstawowe)
int returnZero(int anyNumber) {
if(anyNumber == 0)
return 0;
else {
anyNumber--;
return returnZero(anyNumber);
}
}
A kiedy to zrobię: int zero1 = returnZero (4793); powoduje przepełnienie stosu, jednak jeśli przekazam wartość 4792 jako parametr, nie wystąpi przepełnienie.
Jakieś pomysły, dlaczego?