

— А можешь еще рекурсивную программу написать? Мне очень понравилось.
— Ну что ж, например, ваш класс на физкультуре неправильно выстроился по росту: впереди самый маленький, в затылок ему смотрит мальчик повыше, а сзади самый большой. Вот такая рекурсивная программа перестраивает их в обратном порядке.
Программа «ПЕРЕСТРОЙ» (колонну).
Если в колонне один человек, то возврат.
ПЕРВЫЙ ДЕЛАЕТ ШАГ ВБОК.
«ПЕРЕСТРОЙ» (остаток колонны).
ПЕРВЫЙ ИДЕТ НАЗАД.
Возврат.
— Постой, постой, дай я соображу, как она будет работать. Если в колонне всего один человек, то его нечего перестраивать. Правильно, тут и написано «возврат». А куда возврат? Ладно, пока это неважно, а там посмотрим.
Теперь пусть в колонне два человека. Идем по программе. Первая строчка не для нас, поскольку в колонне два человека. Смотрим следующую строчку. Первый делает шаг вбок — это мы выполнили вторую строчку. Согласно третьей строчке, мы должны перестроить остаток колонны, то есть последнего, второго. Это мы уже умеем — он остается на месте, и происходит какой-то возврат. Чип, а что это за возврат?
— Ну, сам подумай, что ты должен сейчас делать? Вспомни, что ты делал до того, как прочел таинственное слово «возврат», и... возвращайся к этому делу.
— Как что делал? Я перестраивал колонну из двух человек. У меня первый сбоку стоит и ждет.
— Вот и возвращайся к тому, что ты дальше должен с ним делать. В программе на четвертой строчке сказано: «Первый идет назад». Это как раз к нему и относится.
— Так, значит, первый идет назад и оказывается позади второго.
