Рекурсия в процедурах
Почему если написать рекурсивную процедуру так
procedure PrintDigitsOfNumber(n:integer);
begin
if n>0 then
begin
write(n mod 10,' ');
PrintDigitsOfNumber(n div 10)
end
end;
то ответ получится в обратном порядке, а если поменять местами оператор печати и рекурсивный вызов то ответ будет в нормальном порядке( язык pascal)
в первом случае write будет выполняться перед каждым вызовом PrintDigitsOfNumber, во втором write выполнится первый раз только после того как закончатся все вызовы PrintDigitsOfNumber, и первым выполнится write от последнего вызова PrintDigitsOfNumber и далее выполнение пойдет в обратном порядке, т.е. для тебя это в обратном порядке, а для него это по порядку - выполнение всегда идет вперед на самом деле, тут никакого волшебства нет
Это действительно так. Называется преордер и постордер. А при обработке бинарных деревьев бывает еще и инордер. А в чем вопрос?