Oglinditul recursiv al unui număr în C++
Dându-se un număr natural n
, să se determine, folosind un subprogram
recursiv, oglinditul său.
Exemplu. Pentru n = 1239
, oglinditul este 9321
.
Pentru varianta nerecursivă, puteți să urmăriți acest articol.
Cum se calculează răsturnatul (oglinditul) unui număr natural
Forma nerecursivă calcula astfel oglinditul unui număr: cream o variabilă în care să ținem răspunsul și, pe rând, luam cifrele numărului de la coadă și le adăugam în răspuns. La final, în variabila de răspuns aveam oglinditul nostru. Iată o vizualizare a acestui algoritm:
Variabilă | Valoare |
---|---|
n | 03344993311 |
oglindit | 139430 |
Vom proceda similar în varianta recursivă. Avem o funcție cu doi parametri,
n
și raspuns
(care este inițial 0
). Distingem cazurile:
- Dacă
n
mai are cifre, atunci laraspuns
se adaugă ultima cifră a luin
și se apelează funcția cun / 10
(n
fără ultima cifră) și noulraspuns
; - Dacă
n
nu mai are cifre, se returneazăraspuns
.
Implementare în C++
Iată codul, conform observațiilor de mai devreme:
#include <iostream>
using namespace std;
int oglindit(int n, int raspuns) {
if(n > 0) { //Dacă *n* mai are cifre
int cifra = n % 10; //Luăm ultima cifră a lui *n*
raspuns = raspuns * 10 + cifra; //Adăugăm ultima cifră a lui *n* la *raspuns*
n = n / 10; //Tăiem ultima cifră din *n*
return oglindit(n, raspuns); //Apelăm din nou funcția, cu valorile actualizate ale lui *n* și *raspuuns*
} else { //Dacă *n* nu mai are cifre
return raspuns; //Returnăm răspunsul
}
}
int main()
{
//Declarăm și citim *n*, numărul dat
int n;
cin >> n;
//Afișăm oglinditul, folosindu-ne de o funcție recursivă
cout << oglindit(n, 0); //*raspuns* trebuie să fie inițial 0
}
DS
Autorul acestei lecții
Dominic Satnoianu
Această lecție a fost redactată de către Dominic Satnoianu.
© 2021 – 2025 Aspire Education Labs SRL. Toate drepturile rezervate.
Așa cum este specificat și în termeni și condiții, conținutul acestei pagini este protejat de legea drepturilor de autor și este interzisă copierea sau modificarea acestuia fără acordul scris al autorilor.
Încălcarea drepturilor de autor este o infracțiune și se pedepsește conform legii.
Comentarii 0