Documente Academic
Documente Profesional
Documente Cultură
RECURSIA
Mecanismul general
Regula de consisten
Exist unul sau cteva cazuri elementare, la
Descriere
Fie P o problem n care cere calculul valorii v,
v Q = {Q0, Q1, Q2, ..., Qk, ... Qn, ...}
Soluia recursiv
Q1 prin Q0
Se calculeaz (dac e necesar) Q0
Se calculeaz
Q1 folosind Q0
Q2 folosind Q1
...
Qn-1 folosind Qn-2
Subprograme recursive
34
nk = n*nk-1
81
34 = 3 * 33
3 =3*3
3
3 =3*3
2
3 =3*3
1
30 = 1
n k
3 4
n0 = 1.
27
n k
3 3
n k
3 2
n k
3 1
n k
3 0
Subiectul Nr 6, Problema 12
Fie date dou numere a i n, a R, n Z, |a|
<100, |n|<10. Scriei un program, care calculeaz recursiv an.
Intrare: numerele a i n se citesc de la
tastatur.
Ieire: valoarea calculat se nscrie n fiierul
text OUT.TXT.
Analiza problemei
Exist un caz elementar:
a0 = 1
M
o
d
e
l
u
l
m
a
t
e
m
a
t
i
c
n>0
n<0
an
n<0
a, n
a, n+1
Apel
1
Apel
2
a, -1
a, 0
a, n
a, n-1
...
...
a, -2
n>0
Apel |n| 2
Apel |n| 1
Apel |n|
a, 2
a, 1
a, 0
Declaraii
Program Recursie1;
Varn: integer;
a: real;
f: text;
Funcii
function putere
(x: real; y:integer): real;
begin
if y=0 then putere:=1
else
if y<0 then putere:=
putere(x,y+1)/x
else putere:=
putere(x,y-1)*x;
end;
Blocul de calcul
Begin
assign(f, out.txt);
rewrite(f);
readln(a,n);
writeln(f, putere(a,n));
close(f);
end.
Generalizri
Fie P o problem n care cere calculul valorii v,
v Q = {Q1, Q2, ..., Qk, ... Qn, ...}
Soluia recursiv