Var
y0, yk, yk1, eps, d: double;
i: integer;
begin
y0 := 0; yk1 := y0;
Write('Введите величину погрешности: ');
Readln(eps);
repeat
yk := (yk1 + 1) / (yk1 + 2);
d := yk - yk1;
if d >= eps then yk1 := yk
until d < eps;
Writeln('yn=', yk)
end.
Тестовое решение:
Введите величину погрешности: 1e-8
yn=0.618033988205325