В подобных формулах, когда присутствует некоторое количество слагаемых, каждое из которых состоит из некоторого количества сумм или произведений, проще всего, конечно, использовать рекурсивные функции. Это позволяет писать программы быстро и кратко, но расплатой бывает быстрое переполнение программного стека при росте глубины рекурсии и длительное время счёта. Эффективнее, особенно при значительном количестве слагаемых, использовать итерацию, для чего первоначальное выражение следует немного преобразовать.
var
a,p,s:real;
n,i:integer;
begin
Write('a='); Read(a);
Write('n='); Read(n);
p:=1/a;
s:=p;
for i:=1 to n do begin
p:=p/(a+i);
s:=s+p
end;
Writeln('S=',s)
end.
Пример
a=2
n=5
S=0.718253968253968