Documente Academic
Documente Profesional
Documente Cultură
Studiu comparativ
{
¿ n+1 , dacă m=0
A ( m , n )= ¿ A (m−1 , 1), dacă n=0 , m>0
¿ A (m−1 , A(m, n−1)), dacă m> 0 , n>0
Disciplină: Informatică
Elaborat de: SPĂTARU Mihail
elev al clasei a XII-a „D”
Profesor: CURBET Gheorghe
Grad didactic Superior
Bălți, 2023
În cadrul acestui studiu comparativ, ne propunem să analizăm diferențele semnificative între abordările iterativă
și recursivă în implementarea funcției Ackermann. Această funcție, notată convențional ca A(m, n), reprezintă un
teren propice pentru evaluarea avantajelor și dezavantajelor asociate acestor abordări, datorită naturii sale recursive
și creșterii rapide a complexității. În preambul, vom examina caracteristicile distinctive ale implementărilor
iterative și recursive, evidențiind avantajele și dezavantajele fiecăreia în contextul specific al funcției Ackermann.
Rezultate Experimentale:
- Valoarea Ackermann (4, 1): Identitate între cele două variante - 65533.
- Timpul de execuție Ack_It: 15.1338 sec.
- Timpul de execuție Ack_Rec: 18.9883 sec.
Varianta interativă:
Q27(n)=1 Q17(n)=3 Q8(n)=0+max(2,13)+1=14
Q25(n)=1 Q16(n)=2 Q7(n)=2
Q24(n)=1+1+1=3 Q15(n)= 2+3+2+2+2+1=12 Q6(n)=2
Q23(n)=1 Q14(n)=1 Q5(n)=19
Q22(n)=1+3+1=5 Q13(n)=3 Q4(n)=19m+m+1=20m+1
Q21(n)=1+5+1=7 Q12(n)=2 Q3(n)=2
Q20(n)=2 Q11(n)=2+3+1+1=7 Q2(n)=1
Q19(n)=2 Q10(n)=0+12+1=13 Q1(n)=20m+1+2+1+1=20m+5
Q18(n)=2 Q9(n)=2
Vd(n)=12B Vs(n)=12B V(n)=24B
Varianta recursivă:
Structura este prea complicată pentru estimarea manuală corectă.
Concluzii:
În cadrul acestui studiu comparativ privind utilizarea iterativității și recursivității în soluționarea problemei
funcției Ackermann, rezultatele evidențiază aspecte distinctive între cele două paradigme de programare.
Iterativitatea, prezentând un consum moderat de memorie și timpuri de execuție comparabile cu varianta recursivă,
presupune totuși o complexitate structurală considerabilă în implementare. Acest lucru derivă din necesitatea
gestionării stivei și construcției buclei iterative, elemente definitorii ale programelor iterative. În contrast,
recursivitatea aduce cu sine o eleganță conceptuală, în conformitate cu definiția matematică a funcției Ackermann,
însă la un cost semnificativ de memorie, manifestând o creștere exponențială. Această abordare complică procesul
de testare și depanare, deoarece necesită o atenție sporită în administrarea apelurilor recursive și a stării stivei.
Astfel, alegerea între aceste două paradigme depinde de un echilibru complex între eficiența utilizării resurselor și
claritatea conceptuală, și trebuie să țină cont de particularitățile problemei abordate și de preferințele individuale ale
fiecăruia.
return n;
}
int main() {
clock_t T1, T2;
long A;
T1 = clock();
A = Ack_It(4, 1);
T2 = clock();
return 0;
}
Valoarea: 65533 pentru Ack_It(4, 1) Valoarea: 65533 pentru Ack_Rec(4, 1)
Timp de executie T1: 0.001911 sec Timp de executie T1: 0.001473 sec
Timp de executie T2: 15.1357 sec Timp de executie T2: 18.9897 sec
Timp de executie T(n): 15.1338 sec Timp de executie T(n): 18.9883 sec