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 șir a[]
cu n
elemente, să se afișeze pe ecran elementele sale, folosind o funcție recursivă.
Exemplu. Pentru a = (1, 2, 10, 9, 8)
, pe ecran se afișează 1 2 10 9 8
.
Vom crea un subprogram care are ca parametri următorii:
a
);n
);i
);Vom simula o structură repetitivă de tip for
, astfel:
i ≤ n
, atunci:a[i]
);i + 1
;i > n
):Funcția pe care o folosim va fi de tip void
, pentru că nu trebuie să returnăm nimic. De asemenea, vom indexa șirul de la 1
, însă rezolvarea este foarte asemănătoare și pentru indexarea de la 0
.
Iată rezolvarea în C++. Ne folosim de return
pentru a ne opri din executat liniile următoare — exact ca și break
din structurile repetitive.
#include <iostream>
using namespace std;
void afisare(int a[], int n, int i) { //Șirul, lungimea și indicele curent
if(i > n) { //Dacă am terminat șirul, atunci ne oprim din executat
return; //Similar cu break
}
cout << a[i] << " "; //Afișăm numărul curent și apelăm funcția pentru elementele următoare
afisare(a, n, i + 1);
}
int main()
{
//Declarăm și citim șirul nostru (indexat de la 1)
int n, a[101];
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> a[i];
}
//Afișăm șirul, folosind funcția creată
afisare(a, n, 1);
return 0;
}