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 la raspuns se adaugă ultima cifră a lui n și se apelează funcția cu n / 10 (n fără ultima cifră) și noul raspuns;
  • 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

Autentifică-te pentru a putea comenta.

Autentifică-te