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.
Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.
Meniu shortcuturi | ? |
Căutare probleme sau utilizatori | / |
Navigare printre rezultatele căutării | ↑, ↓ |
Meniu de contact și feedback | CTRL + Shift + F |
Ieșire din meniuri | Esc |
Setări editor | CTRL + Shift + S |
Schimbare stil editor | CTRL + Shift + E |
Șabloane de cod | CTRL + Shift + 1/2/3 |
Golire editor | CTRL + Shift + 4 |
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.
Vom crea o funcție care ia ca parametru un număr natural n
. Logica rezolvării este următoarea:
n ≤ 9
(n
are doar o cifră), returnăm această cifră;n % 10
);n / 10
— n
fără ultima cifră)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;
}