Переполнение стека, вызванное рекурсивной функцией

Будучи новичком в программировании на C ++ и архитектуре компьютерных систем, я все еще изучаю основы C ++. Вчера я читал о рекурсивной функции, поэтому я решил написать свою собственную, вот что я написал: (очень простой)

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

}

И когда я делаю это: int zero1 = returnZero (4793); это вызывает переполнение стека, однако, если я передаю значение 4792 в качестве параметра, переполнение не происходит.

Есть идеи, почему?

Ответы на вопрос(6)

Ваш ответ на вопрос