В университете задали решить эту простую задачу (с погрешностью 0.001 вычислить интеграл от 0 до 1 sin(x)/x*dx) с помощью рекурсии. Задача без рекурсии решается элементарно, но вот с ней у меня проблемы. Программу написал, при запуске выдаёт какую-то ошибку. Надеюсь на вашу помощь.
p.s. Программа из методички БЕЗ рекурсии:
program Method_Prm;
const
e = 0.001;
var
i, n: word;
a, b, j1, j2, h, s, x: real;
begin
writeln(‘Введите пределы интегрирования a и b’);
readln(a, b);
n:= 2;
j1:= 0;
repeat
j2:= j1;
h:= (b - a)/n;
x:= a; s:= 0;
for i:= 1 to n do begin
s:= s + sin(x)/x;
x:= x + h
end;
j1:= s*h;
n:= n*2
until abs(j1 - j2);
writeln(‘Интеграл = ’, j1)
end.
Неработающая, составленная мной программа:
program lab_4_2;
const e=0.001;
var a,b,j1,j2,s:real;
function int(a,b:real; n:word):real;
var h,x:real; i:byte;
begin
j2:=j1;
h:=(b-a)/n; x:=a;
for i:=1 to n do begin
s:=s+sin(x)/x;
x:=x+h end;
j1:=s*h;
if abs(j1-j2)<e then int:=j1
else int:=int(a,b,n*2)
end;
begin
writeln(int(0,1,2));
readln
end.