Что такое рекурсия
Что такое рекурсия
Это довольно старая возможность таких языков программирования, как Logo, LISP и C++. В этих языках можно определить функцию (совокупность одной или множества команд), которая выполняет заданную операцию. Главная программа вызывает функцию, выполняя для этого команду, которая называется вызовом функции. В процессе своей работы функция вызывает сама себя — это самая простая форма рекурсии.
Для иллюстрации достоинств и недостатков рекурсии приведем простую программу, в которой одна из функций использует рекурсивные вызовы. Эта программа, написанная на C++, чертит на экране компьютера спираль, начиная с единичного сегмента, направленного вверх.
В ее состав входят три функции.
- Функция line(n) чертит отрезок длины n.
- Функция Jeft_turn(d) поворачивает "чертежный инструмент" на d градусов против часовой стрелки.
- Функция spiral(segment), которая определяется следующим образом:
void spiral(int segment)
{
line(segment);
left_turn(90);
spiral(seement + 1);
}
Если из главной программы вызвать spiral(1), то будут выполняться такие действия:
- spiral(1) чертит единичный отрезок (т.е. единичной длины), направленный вверх;
- spiral(1) выполняет поворот на 90 градусов против часовой стрелки;
- spiral(1) вызывает spiral(2);
- spiral(2) чертит отрезок, равный по длине двум единичным и направленный влево;
- spiral(2) выполняет поворот на 90 градусов против часовой стрелки;
- spiral(2) вызывает spiral(3);
- и т.д.
Постепенно благодаря программе появляется спиральная кривая, изображенная на Рисунок 12.1.