Код
Procedure a (var v:char);
var c:char;
begin
read(c);
g:=c;
If c<>'.' then
a(g);
writeln(c)
end;
что быдет выводить a(g)
если g глобальная переменная типа char.
а input '1' '2' '3' '4' '.'
А компиляторы уже не справляются?
.4321
Потому что рекурсивный вызов. вы вызвали 1, оно не равно точке, вы вызвали функцию и ввели 2, опять вызвали функцию и тд,в итоге вы вызвали точку,точка равна точке,поэтом условие не срабатывает и он идет дальше выводит на экран точку, затем от возвращается к строчке a(g); где g=4, и выполняет следующую строчку, тобиш выводит 4, и тд пока не дойдет до самого первого вызова функции и не выведет 1.
Если обьяснил непонятно, введите в поисковике "рекурсивные функции" там обязательно будут статьи с примерами и иллюстрациями.