Примеры рекурсивных программ

Отображение более сложных рекурсивных связей в алгоритмах покажем на примерах.

Вычисление корня уравнения методом деления отрезка пополам. Напишем функцию, отыскивающую решение уравнения F (x) =0 на заданном отрезке (А,В) (рис.2.3).

В рекурсивной функции Bisect отрезок (x1,x2)делится пополам. Если значение функции F (x)меньше заданной точности eps вычисления корня, то считается, что корень найден и следует выход, иначе необходимо выбрать один из отрезков (x1,m)или (m,x2)для дальнейшего уточнения корня. Из рис. 2.3 видно, что должен выбираться тот отрезок, на концах которого функция F (x)имеет разные знаки (на рисунке это отрезок (x1,m)). Выбору отрезка соответствует коррекция x1 или x2. Далее функция Bisect вызывается с новыми значениями x1 и x2.

Листинг 2.1. Решение уравнения методом деления отрезка пополам

Procedure Bisect (Var x1,x2:Real);

Function F(x:Real):Real; Begin F:= x*x - 2; End;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: