Все локальные переменные инициализируются каждый раз, когда запускается процедура. Значения пропадают после завершения работы процедуры. Есть два способа сохранения состояния, доступных непосредственно исполняющейся программе: рекурсия и глобальные переменные.

И часто бывает так, что использование переменных даёт огромнейшую выгоду по сравнению с рекурсией. Во всяком случае, если говорить про императивные языки.