Вы на самом деле не возвращаетесь к main()
. Это не ваш выбор.return
отправляет управление обратно функции вызова.Обстоятельством, при котором ваш код работал бы идеально, было то, что он никогда не достигал рекурсивного вызова.То есть, если он достиг блока else
и вернулся к вызывающей стороне, то есть main
.
Но со второго раза вызывающая сторона больше не является main()
.Скорее, вызывающей стороной является сама функция.Таким образом, начиная со второго раза, даже если условие не совпадает, оно вернется к самой функции и после этого будет вызвано снова.