Следующий пример иллюстрирует применение стека для решения задачи, в которой часть работы выполняется по тому же алгоритму, что и вся работа. Каждое значение интеграла
будем вычислять по формуле прямоугольников (хотя применяемый метод безразличен и можно было бы использовать любой).
Вычисляем два очередных приближения интеграла –
- как площадь одного прямоугольника:

- как площадь двух прямоугольников:

Если два приближения отличаются друг от друга более чем на назначенную меру погрешности eps, делим интервал интегрирования (a,b) пополам, и левую половину сразу обработаем тем же алгоритмом, а обработку правой отложим на потом – в стек. В противном случае , I2 – окончательный ответ. Прибавим его к уже вычисленной части результата и поинтересуемся, не осталось ли отложенной на потом работы в стеке. Если ДА, то возьмемся за ее выполнение, если НЕТ – решение получено.
Текст функции, использующей ручное ведение стека для реализации рекурсии, приведен ниже:
#include <math.h>
#include <values.h>
struct INTERVAL{
double a,b;
};
const int MAXSTACK=100;
//----------------------------------------
double Integral(double a, double b, double (*f)(double),
double eps){
// вычисление определенного интеграла от a до b с точн. eps
// от ф-ии f по формуле прямоугольников