Contact și feedback

Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.


Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.


Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.

Shortcuturi

Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.

Generale

Meniu shortcuturi?
Căutare probleme sau utilizatori/
Navigare printre rezultatele căutării↑, ↓
Meniu de contact și feedbackCTRL + Shift + F
Ieșire din meniuriEsc

Editor probleme

Setări editorCTRL + Shift + S
Schimbare stil editorCTRL + Shift + E
Șabloane de codCTRL + Shift + 1/2/3
Golire editorCTRL + Shift + 4

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
}

Cuprinsul lecției

Se încarcă…

Citește și

Instrucțiunea continue (structuri repetitive)Află secolul unui an citit de la tastatură în C++Matrice în C++. Declararea și parcurgerea tablourilor bidimensionaleNumărul de divizori al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Verificare dacă șir de caractere este palindrom în C++Al N-lea termen dintr-o progresie geometricăMaximul și minimul a n valori în C++Verifică dacă un număr aparține șirului Fibonacci în C++Verifică dacă o literă este vocală în C++Citește un șir de caractere cu spații în C++Cel mai mic număr cu suma cifrelor N în C++Aria și circumferința unui cerc în C++Calculul combinărilor de n luate câte k (nCk) în C++Maximul și minimul unui vector în C++Mediana unui șir de valori în C++Vectorii în C++: declarare și parcurgereCombinatorică în C++: permutări, aranjamente, combinări și altelePrima cifră a unui număr în C++Valoarea absolută (modulul) unui număr în C++Transformarea unui număr din baza 10 în baza 2 în C++Instrucțiunea do while (structuri repetitive)Verificare număr prim în C++ (Clasa a IX-a)Verifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++Ridicarea la putere în timp logaritmic în C++. Exponențiere rapidăSuma divizorilor unui număr în C++Citirea și afișarea matricelor în C++Cifra maximă și minimă a unui număr în C++Transformarea unei litere mari în literă mică în C++Verificare dacă un număr este palindrom în C++De ce cer unele probleme răspunsul modulo 666013 sau modulo 1.000.000.007?Numărul aranjamentelor în C++ (formula aranjamentelor)Do while vs while în C++ - Care e diferența?Cel mai semnificativ bit în C++Interschimbarea a două variabile în C++ (3 metode)Aplicații cu ciurul lui Eratostene în C++: suma divizorilor, numărul divizorilorCe înseamnă variabilă globală și locală în C++?Instrucțiunea de decizie în C++: if, else, switch, caseCifra maximă a unui număr recursiv în C++Ciurul lui Eratostene în C++Oglinditul unui număr în C++Numărul de divizori al unui număr în C++Afișarea divizorilor primi ai unui număr în C++Căutare binară în C++Structuri repetitive (while, do while, for, etc)Interclasarea a doi vectori în C++Suma numerelor naturale dintr-un interval dat în C++Vectorii în C++: citire și afișareCel mai frecvent element dintr-un șir în C++Suma divizorilor numerelor de la 1 la N (Folosind ciurul lui Eratostene)Instrucțiunea for (structuri repetitive)Câte numere naturale sunt într-un interval dat? (C++)Cifrele unui număr. Prelucrarea cifrelor unui număr în C++Inversarea unui vector în C++Pointer în C++. Variabile de tipul char * (char steluță)Cum să afișezi partea întreagă a unui număr real în C++Instrucțiunea break (structuri repetitive)Operații cu numere mari în C++ - Toate funcțiile explicateTipuri de date în C++: numere întregi, reale, caractere și alteleVerifică dacă trei puncte sunt coliniare C++Numărul de divizori primi ai unui număr în C++Funcții în C++. Ce sunt subprogrameleVerifică dacă un caracter este cifră în C++Suma 1 + 2 + 3 + ... + N în C++Vectori de frecvență (de apariții) în C++Aria unui triunghi folosind coordonatele acestora în C++Cel mai mic/mare divizor prim al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Bordarea unei matrice în C++Matrice Fibonacci - al n-lea termen Fibonacci în timp logaritmicMaximul și minimul a două valori în C++Numărul de apariții al unui număr într-un vector în C++Sortare crescătoare recursivă în C++ - Merge sort și Bubble sortOglinditul recursiv al unui număr în C++Materia pentru olimpiada de informatică - tot ce trebuie să știiVerifică dacă un număr dat este o putere de 2 în C++Copiuțe: Cifrele unui numărVerifică dacă o literă este mică sau mare în C++Numărul combinărilor în C++ (formula combinărilor)Cel mai puțin semnificativ bit în C++Comentarii în C++Generarea șirului Fibonacci generalizat în C++Ce este o funcție void în C++?Tutorial instalare CodeBlocks (ușor) - Introducere în informatică C++Maximul și minimul a trei valori în C++CMMMC a două numere în C++ (cel mai mic multiplu comun)Indicatorul lui Euler în C++Radicalul unui număr în C++ (rădăcina pătrată)Ce este o variabilă unsigned în C++?Distanța dintre două puncte în C++Al N-lea termen dintr-o progresie aritmeticăCe înseamnă endl în C++?Verifică dacă un număr este par sau impar fără modulo în C++CMMDC recursiv a două numere naturale în C++Algoritm recursiv pentru căutare binară (clasa a X-a)Rădăcina cubică a unui număr în C++ (cube root)Matrice pătratice în C++. Diagonala principală și secundarăCum să calculezi instant 2 la puterea N în C++Instrucțiunea while (structuri repetitive)Funcții predefinite în C++ (matematice, șiruri de caractere)Indicatorul lui Euler al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Cel mai mare divizor comun (CMMDC) a două numere în C++Șiruri de caractere în C++. Tot ce trebuie să știiComplexitatea unui algoritm (timp și spațiu) în C++Numărul de cifre ale factorialului unui numărVerificarea unui an bisect în C++Cum să citești și să afișezi în fișiere în C++Cifra de control a unui numărDivide et Impera (metodă de programare C++)Cea mai lungă secvență de elemente crescătoare în C++Verifică dacă un caracter este literă în C++Tipul struct în C++. Ce sunt structurile de date neomogeneNumărul minim de peroane pentru o gară în C++Afișarea elementelor unui vector recursiv în C++Inversarea unui șir de caractere în C++Transformarea unui număr din baza 2 în baza 10 în C++Transformarea unei litere mici în literă mare în C++Codul ASCII (tabel complet)Factorialul unui număr în C++Al N-lea termen Fibonacci în C++Numere triunghiulare. Verificarea unui număr triunghiularRecursivitate în C++Numărul permutărilor în C++ (formula permutărilor)Șirul lui Fibonacci în C++Suma elementelor unui vector recursiv în C++Aflarea sumei primelor N sume Gauss

© Drepturi de autor

Echipa InfoAs își rezervă drepturile de autor pentru conținutul acestei pagini. Copierea conținutului fără acordul scris expres al InfoAs reprezintă o încălcare a Legii 8/1996 și va fi tratată ca atare.

Trimite lecția

Toată lecția

Doar videoclipul pe YouTube

Informatica devine ușoară cu InfoAs

Intră în cont