Помощь - Поиск - Пользователи - Календарь
Полная версия: что будет выводить процедура и в каком порядке?
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
natik3
Код

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' '.'
sheka
А компиляторы уже не справляются? smile.gif .4321
natik3
Цитата(sheka @ 25.06.2012 17:54) *

А компиляторы уже не справляются? smile.gif .4321

а почему именно так?
Krjuger
Потому что рекурсивный вызов. вы вызвали 1, оно не равно точке, вы вызвали функцию и ввели 2, опять вызвали функцию и тд,в итоге вы вызвали точку,точка равна точке,поэтом условие не срабатывает и он идет дальше выводит на экран точку, затем от возвращается к строчке a(g); где g=4, и выполняет следующую строчку, тобиш выводит 4, и тд пока не дойдет до самого первого вызова функции и не выведет 1.
Если обьяснил непонятно, введите в поисковике "рекурсивные функции" там обязательно будут статьи с примерами и иллюстрациями.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.