online: 6; azi: 1344; total: 53350 Manual clasa a x a - Tehnici de implementarea algoritmilor - Recursivitate

Manual clasa a X a

Tehnici de implementarea algoritmilor

Recursivitate

Scrieţi un subprogram recursiv care să verifice dacă două numere a şi b citite de la tastatură sunt termeni consecutivi ai şirului lui Fibonacci.
# include <iostream>
using namespace std;
bool suntConsecutivi ( int a, int b, int x, int y) {
if (a == x && b == y) { // cazul de oprire
return true ;
}
else if (a > x || b > y) { // verificare dacă am depășit a și b
return false ;
}
else { // recursivitate
return suntConsecutivi (a + b, a, x, y) || suntConsecutivi (a + b, b, x, y);
}
}
int main () {
int a, b;
cout << "Introduceti doua numere intregi: " ;
cin >> a >> b;
if ( suntConsecutivi ( 1 , 0 , a, b)) {
cout << a << " si " << b << " sunt termeni consecutivi ai sirului lui Fibonacci." << endl;
}
else {
cout << a << " si " << b << " nu sunt termeni consecutivi ai sirului lui Fibonacci." << endl;
}
return 0 ;
}

Subprogramul suntConsecutivi verifică recursiv dacă numerele a și b sunt termeni consecutivi ai șirului lui Fibonacci. Aceasta se face prin compararea lor cu termenii 1 și 0 ai șirului (primii doi termeni) și apoi prin adăugarea succesivă a celorlalți termeni prin recursivitate (adunând termenii anteriori pentru a obține termenii următori). Dacă numerele a și b devin mai mari decât numerele verificate ( x și y ), subprogramul se oprește și returnează false .
În programul principal, se citesc cele două numere a și b , se apelează subprogramul suntConsecutivi și se afișează un mesaj corespunzător în funcție de rezultatul verificării.