Elaborati un program Pascal, care contine un subprogram recursiv care calculeaza valoarea functiei F(x), definita astfel:
F(x)=3sin2x+ (factorii de sub radical sunt sub modul)
Anexe:
nokia2700:
Salut, de ce un program 'recursiv' ?
Răspunsuri la întrebare
Răspuns de
1
Gandeste-te ca poti scrie respectiva operatie ca
Asta este echivalent cu a aduna de 3 ori la rand expresia pe care o ai intre paranteze. Poti sa folosesti un parametru aditional pentru a regla acel numar de ori aduni,
program operatie_rec;
//functia veche
function Fvechi(x:double):double;
begin
Fvechi:=3*sin(2*x)+sqrt(abs(3/4+x*x));
end;
//recursiv
//poti sa te gandesti ca este ca si cum ai aduna de 3 ori la rand
//formula de mai jos sin(2*x)+1/3*sqrt(abs(3/4+x*x))+F(x,n-1)
//cand ai facut cele 3 adunari succesive, atunci te opresti.
//pentru a obliga functia sa dea acelasi rezultat ca cel de sus
//trebuie sa dai obligatoriu valoarea pentru n=3
function F(x:double;n:integer):double;
begin
if n>0 then F:=sin(2*x)+1/3*sqrt(abs(3/4+x*x))+F(x,n-1)
else
F:=0;
end;
var x:double;
begin
writeln('Scrieti valoarea lui x:');
readln(x);
writeln('Rezultat factorial cu forma iterativa:',Fvechi(x));
writeln('Rezultat factorial cu forma recursiva:',F(x,3));
end.
Asta este echivalent cu a aduna de 3 ori la rand expresia pe care o ai intre paranteze. Poti sa folosesti un parametru aditional pentru a regla acel numar de ori aduni,
program operatie_rec;
//functia veche
function Fvechi(x:double):double;
begin
Fvechi:=3*sin(2*x)+sqrt(abs(3/4+x*x));
end;
//recursiv
//poti sa te gandesti ca este ca si cum ai aduna de 3 ori la rand
//formula de mai jos sin(2*x)+1/3*sqrt(abs(3/4+x*x))+F(x,n-1)
//cand ai facut cele 3 adunari succesive, atunci te opresti.
//pentru a obliga functia sa dea acelasi rezultat ca cel de sus
//trebuie sa dai obligatoriu valoarea pentru n=3
function F(x:double;n:integer):double;
begin
if n>0 then F:=sin(2*x)+1/3*sqrt(abs(3/4+x*x))+F(x,n-1)
else
F:=0;
end;
var x:double;
begin
writeln('Scrieti valoarea lui x:');
readln(x);
writeln('Rezultat factorial cu forma iterativa:',Fvechi(x));
writeln('Rezultat factorial cu forma recursiva:',F(x,3));
end.
Alte întrebări interesante
Matematică,
8 ani în urmă
Geografie,
8 ani în urmă
Limba română,
8 ani în urmă
Arte,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Informatică,
9 ani în urmă