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?

questionAnswers(6)

yourAnswerToTheQuestion