Дано натуральное число n. Вычислить: S=1/1! - 1/2! - 1/3! -...- 1/n! Написать это в...

0 голосов
28 просмотров

Дано натуральное число n. Вычислить: S=1/1! - 1/2! - 1/3! -...- 1/n!
Написать это в Паскале!


Информатика (51 баллов) | 28 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Чтобы уменьшить количество вычислений, преобразуем формулу к рекуррентной.
\displaystyle S_n= \frac{1}{1!}-\frac{1}{2!}-\frac{1}{3!}-... -\frac{1}{n!} =1-\sum_{i=2}^n \frac{1}{i!}=1-\sum_{i=2}^na_i \\ \\ k!=k\times (k-1)! \\ a_i= \frac{1}{i!}= \frac{a_{i-1}}{i}, a_2= \frac{1}{2}

Теперь все готово для программирования.
// PascalABC.NET 3.2, сборка 1353 от 27.11.2016

var
  i,n:integer;
  a,s:real;
begin
  Write('n='); Read(n);
  if n=1 then Writeln('S=1')
  else
    if n=2 then Writeln('S=0.5')
    else begin
      s:=0.5; a:=0.5;
      for i:=3 to n do begin a:=a/i; s:=s-a end
      end;
  Writeln('S=',s)
end.

Пример
n=10
S=0.281718198853615

(150k баллов)