Вот такая програмка: нужно описать рекурсивную функцию (f, a, b, eps), которая методом деления отрезка пополам находит с точностью eps корень уравнения f(x)=0 на [a, b].
Считать, что eps>0, a<b, f(B)<0 i f(x) - непрерывная.
{$n+}
Uses Crt;
Type
fType = Function(x: Double): Double;
Function f(x: Double): Double; Far;
Begin
f := 1 / (Exp(x * Ln(2))) - 10 + 0.5*Sqr(x)
End;
function dichotomy(f: fType; a, b: Double;
const eps: Double): Double;
var c: double;
Begin
If (b - a) <= eps then begin
dichotomy := ( a + B ) / 2;
exit;
end;
c := ( a + B ) / 2;
If (f( a ) * f( с )) < 0 Then
dichotomy := dichotomy(f, a, c, eps)
Else
dichotomy := dichotomy(f, c, b, eps)
End;
Var
x, Eps, a, b: Double;
begin
ClrScr;
Writeln('Введите значения a и b'); Read( a, B );
WriteLn('Введите точность Eps'); Read(Eps);
x := dichotomy(f, a, b, Eps);
WriteLn('Корень равен x=', x:10:7);
ReadKey
end.