Documente Academic
Documente Profesional
Documente Cultură
Culturii si Cercetarii al
Republicii Moldova
Universitatea Tehnică
a Moldovei
Departamentul ISA
Raport
Lucrarea de laborator nr .1
Scopul lucrării:
Analiza teoretică;
Mersul lucrării:
Ceea ce este fascinant la acest sir de numere este faptul ca exista o constanta in cadrul lui care se
repeta infinit pe masura ce sirul avanseaza. Aceasta constanta este supranumit coeficientul de aur
sau proportia divina si se obtine din doua numere consecutive ale sirului oriunde s-ar afla ele. De
exemplu puteti verifica in sirul de mai sus ca raportul dintre un numar si numarul anterior este
intotdeauna aproximativ egal cu 1.618 cu cat se avanseaza in serie cu atat mai aproape.
Cel de-al n-lea termen al şirului se poate obtine direct din definiţie:
1) functionfib1(n)
i← 1; j ←0
for k ←1 to n do j←i + j
i←j - i
return j
void f1(int n) { //Algoritmul iterativ
int t1=0,t2=1,t3;
t3=t2+t1;
t1=t2;
t2=t3;
2) functionfib2(n)
ifn < 2 then return n
else return fib2(n-1) + fib2(n-2)
int f2(int n) { //Algoritmul recursiv
if (n==1)
return 0;
else
if (n==2)
return 1;
else
return f2(n-2)+f2(n-1);
3)
functionfib3(n)
i←1; j ←0; k←0; h←1
whilen > 0 do
ifn este impar then t←jh
j←ih+jk+t
i←ik+t
t ←h2
h ←kh+t
k ←k2+t
n←ndiv 2
return j
int f3(int n){
int i = 1, j = 0, k = 0, h = 1, t;
while (n > 0)
if (n % 2 == 1)
t = j*h;
j = i*h + j*k + t;
i = i*k + t;
t = h*h;
h = 2 * k* h + t;
k = k*k + t;
n = n / 2;
return j;
4)
return (pow((sqrt(5)+1)/2,n)-(pow(-1,n))/pow((sqrt(5)+1)/2,n))/sqrt(5);
Analizand acesti 4 algoritmi de determinare a termenului n din sirul lui Fibonnaci ,din punct de
vedere al timpului de executiei, cel mai eficient este algoritmul 3(cu ajutorul instructiunii while),
deoarece el efectueaza solutionarea problemei intr-un timp scurt de executie si in mai putine
repetari, ceea ce nu s-ar spune pentru algoritmul 2(recursia) care face mult mai multe iteratii
pentru a calcula elemental n . Daca programul urmează a fi rulat de un număr mare de ori, având
şi un număr mare de date de prelucrat, trebuie ales algoritmul care duce la o execuţie mai rapidă .
0 5 10 15 20 30 40 50
f1 1 5 10 15 20 30 40 50
f2 2 30 354 3946 43782 538507 59721406 662320562
4
f3 1 6 8 8 10 10 12 15
f4 1 25 100 225 400 900 1600 2000
Graficele:
Concluzie:
In urma acestei lucrari s-a analizat algoritmii de calculare a termenului n din sirul lui Fibonacci
si in dependenta de dimensiunea problemei se alege algoritmul cel mai eficient: f3 prin while
,deoarece timpul de executie este mai mic, nu are nevoie de multa memorie si nu face multe
iteratii pentru a gasi termenul n in compartie cu ceilalti algoritmi care cresc exponential, folosesc
o cantitate mare de resurse ce nu se mai recupereaza. Pentru fiecare problema sunt diferiti
algoritmi de solutionare a ei, dar trebuie de tinut cont de o serie de parametri ai algoritmilor. El
trebuie sa fie simplu, generalizat, sa utilizeze eficient si rational resursesele calculatorului si sa
aiba un timp redus de executie.