Шаг 15.
Алгоритмы.
Рекурсия. Продолжение

    На этом шаге продолжим рассматривать рекурсию.

    Псевдокод - представляет собой высокоуровневое описание решаемой задачи . Он записывается в форме, похожей на программный код, но в большей степени напоминает естественный язык.

    Рассмотрим псевдокоды первого и второго решения задачи поиска сюрприза в коробках.

    Первое решение можно построить на цикле while. Пока куча коробок не пуста, взять очередную коробку и проверить ее содержимое:

//в кучу добавляем коробки 
куча = собрать_все_коробки_из_главной_коробки();
while куча не пуста do
begin
   //взять из кучи очередную коробку,
   //в коробке есть новые коробками или сюрприз
   коробка = взять_коробку(куча);
   //для всех элементов новой коробки
   for i:= 1 to все_содержимое_коробки do
     if элемент_коробки = коробка then
       добавить_коробку(коробка, куча);
     else сюрприз_найден();
end;

    Второй способ основан на рекурсии. Рекурсией называется вызов функцией самой себя. Второе решение на псевдокоде может выглядеть так:

procedure поиск_сюрприза(коробка);
begin 
  for i:=1 to все_элементы_коробки do
    if элемент_коробки = коробка then 
	   поиск_сюрприза(элемент_коробки)
	else сюрприз_найден();
end;

    Оба решения делают одно и то же, но второе решение кажется более понятным. Рекурсия делает решение более понятным. Применение рекурсии не ускоряет работу программы: более того, решение с циклами иногда работает быстрее. Рекурсия используется во многих нужных алгоритмах, поэтому важно понимать эту концепцию.

    На следующем шаге продолжим рассматривать рекурсию.




Предыдущий шаг Содержание Следующий шаг