👤

Elaborati un program Pascal, care contine un subprogram recursiv care calculeaza valoarea functiei F(x), definita astfel:
F(x)=3sin2x+[tex] \sqrt \frac{3}{4} + x^{2} [/tex] (factorii de sub radical sunt sub modul)


Elaborati Un Program Pascal Care Contine Un Subprogram Recursiv Care Calculeaza Valoarea Functiei Fx Definita Astfel Fx3sin2xtex Sqrt Frac34 X2 Tex Factorii De class=

Răspuns :

Gandeste-te ca poti scrie respectiva operatie ca
[tex]F(x)=3*(\sin{(2*x)}+\sqrt{|\frac{3}{4}+x^{2}|})[/tex]
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.