online: 4; azi: 1160; total: 53166 Manual clasa a x a - Tehnici de implementarea algoritmilor - Recursivitate

Manual clasa a X a

Tehnici de implementarea algoritmilor

Recursivitate

Scrieţi un program în care, folosind recursivitatea, sa se afiseze termenul n din urmatoarele siruri , cu
a 0 =b 0 =1
an=a n-1 +b n-1
an=a n-1 -b n-1
Calculati adancimea recursivitatiipentru apelurile a(10), b(10), a(11), a(n) si b(n). Scrieti un program iterativ care sa rezolve aceeasi problema.
Pentru a rezolva această problemă prin metoda iterativă, vom folosi un buclă while care va itera de la 1 până la n, calculând în fiecare pas valorile pentru a și b și actualizând valorile precedente.
# include < iostream >
using namespace std ;
int main () {
int n, a0 = 1 , b0 = 1 ;
cout << " Introduceti n: " ;
cin >> n;
int a = a0, b = b0;
for ( int i = 1 ; i <= n; i++) {
if (i % 2 == 1 ) {
a = a + b;
cout << "a(" << i << ") = " << a << endl ;
} else {
b = a - b;
cout << "b(" << i << ") = " << b << endl ;
}
}
return 0 ;
}
În acest cod, folosim o variabilă i pentru a itera de la 1 la n . În fiecare iterație, verificăm dacă i este impar sau par, și calculăm și afișăm valoarea corespunzătoare pentru a sau b.
Pentru a calcula adâncimea recursivității, putem număra câte iterații a fost nevoie în funcția recursivă pentru a ajunge la baza recursivității, adică până la a0 sau b0 .
# include < iostream >
using namespace std ;
int a ( int n) {
if (n == 0 )
return 1 ;
else
return a (n -1 ) + b (n -1 );
}
int b ( int n) {
if (n == 0 )
return 1 ;
else
return a (n -1 ) - b (n -1 );
}
int main () {
int n;
cout << " Introduceti valoarea lui n: " ;
cin >> n;
cout << "Termenul " << n << " din sirul a: " << a (n) << endl ;
cout << "Termenul " << n << " din sirul b: " << b (n) << endl ;
return 0 ;
}

Acest program utilizează funcțiile a și b pentru a calcula recursiv termenii celor două șiruri. Funcția a(n) calculează termenul n din primul șir, folosind recursiv funcția b(n-1) pentru a obține termenul anterior, iar funcția b(n) calculează termenul n din al doilea șir, folosind recursiv funcția a(n-1) și b(n-1). În funcția main , se citește valoarea lui n de la tastatură și se afișează termenii doriti pentru cele două șiruri.