Var
f_new, f_old: real;
i, j, n: integer;
Begin
f_new:=1;
i:=1;
repeat
f_old:=f_new;
n:=1;
for j := 1 to i do n:=n*j;
if (i mod 2) = 0
then f_new:=f_old+1/n
else f_new:=f_old-1/n;
i:=i+1;
until (abs(f_old-f_new))<=0.001;
Writeln('Результат: ',f_new:6:3);
Readln;
End.
Вариант 2
function fact(N: integer): longint;
begin
if N= 0 then
fact := 1
else fact := fact(N-1) * N
end;
function epscalc(n: integer) : extended;
var sum, exact: extended;
begin
sum:=0;
exact:=1/e;
repeat
for i:=1 to n do sum := sum + 1/fact(i);
until abs(exact-sum)<=0.001
end;