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

Cifra maximă a unui număr recursiv în C++

Dându-se un număr natural n, să se determine cea mai mare cifră a sa, folosind un subprogram recursiv.

Exemplu. Pentru n = 12930, răspunsul este 9.

Pentru varianta nerecursivă, urmăriți acest articol.

Abordarea problemei

Vom crea o funcție care ia ca parametru un număr natural n. Logica rezolvării este următoarea:

  • Dacă n ≤ 9 (n are doar o cifră), returnăm această cifră;
  • În caz contrar, calculăm:
    • cifra curentă (cu n % 10);
    • maximul celoraltor cifre de după cea curentă (apelăm funcția pentru n / 10n fără ultima cifră)
    • returnăm maximul dintre aceste două valori.

Implementare în C++

Iată rezolvarea în C++.

#include <iostream>

using namespace std;

int cifraMaxima(int n) {
    if(n <= 9) { //Numărul are doar o cifră, o returnăm
        return n;
    } else {
        int cifra = n % 10; //Cifra curentă
        int maximDupa = cifraMaxima(n / 10); //Maximul cifrelor de după cifra curentă
        //Returnăm valoarea mai mare dintre cifra și maximDupa
        if(cifra > maximDupa) {
            return cifra;
        } else {
            return maximDupa;
        }
    }
}

int main()
{
    //Declarăm și citim numărul nostru
    int n;
    cin >> n;

    //Afișăm cifra maximă a sa
    cout << cifraMaxima(n);
    return 0;
}

Alte resurse sau bibliografie

Obține medalia mult dorită. Devino As la olimpiadă.

Curs complet de olimpiadă, pregătit de olimpici de la Oxford și TU Delft.

Cuprinsul lecției

Se încarcă…

Citește și

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

© 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