Excesso de pilha causado pela função recursiva

Sendo um iniciante em programação C ++ e arquitetura de sistemas de computador, eu ainda estou aprendendo o básico do C ++. Ontem eu li sobre a função recursiva, então eu decidi escrever o meu, aqui está o que eu escrevi: (muito básico)

int returnZero(int anyNumber) {
    if(anyNumber == 0)
        return 0;
    else  {
        anyNumber--;
        return returnZero(anyNumber);
    }

}

E quando eu faço isso: int zero1 = returnZero (4793); isso causa um estouro de pilha, no entanto, se eu passar o valor 4792 como parâmetro, nenhum estouro ocorrerá.

Alguma ideia do por que ?

questionAnswers(6)

yourAnswerToTheQuestion