Из-за дурацкого сбоя этого сервиса при сохранении ответа пропал получасовой набор формул в LaTex. Прошу модераторов удалить этот ответ.
P.S. Набираешь ответ - как по минному полю идешь. При нажатии "сохранить" неизвестно что произойти может. Например, при случайном нажатии "сохранить ответ" (каждый может ошибиться) нет анализа, того, что в поле набора данных не пусто и весь этот набор формул мгновенно "улетает в никуда".
Я уж не говорю о постоянных "Вы были отключены от сервера".
И еще. Поскольку автор вопроса не виноват, даю два "голых" (без формул) решения.
1. Рекурсивная программа (как не надо решать подобные задачи)
{ рекурcивная программа }
function prod(a,b:integer):real;
var
i:integer;
p:real;
begin
p:=1;
for i:=a to b do p:=p*i;
prod:=p
end;
function pow2(n:integer):integer;
var
i,p:integer;
begin
p:=1;
for i:=1 to n do p:=p*2;
pow2:=p
end;
function an(n:integer):real;
begin
if n=1 then an:=0.5
else an:=an(n-1)*n/prod(pow2(n-1)+1,pow2(n))
end;
var
s:real;
i,n:integer;
begin
Write('n='); Read(n);
s:=0;
for i:=1 to n do s:=s+an(i);
Writeln(s)
end.
Пример:
n=4
0.58348214285829
2. А вот рекуррентная, которую можно написать, если немного подумать.
{ рекуррентная программа }
var
a,p,s:real;
i,j,n,lo,hi:integer;
begin
Write('n='); Read(n);
a:=0.5; s:=a; lo:=1; hi:=2;
for i:=2 to n do begin
p:=1; lo:=hi+1; hi:=hi*2;
for j:=lo to hi do p:=p*j;
a:=a*i/p;
s:=s+a
end;
Writeln(s)
end.
Пример
n=4
0.58348214285829