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