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

Afișarea elementelor unui vector recursiv în C++

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.

Abordarea problemei

Vom crea un subprogram care are ca parametri următorii:

  • Vectorul nostru (a);
  • Lungimea sa (n);
  • Poziția curentă pe care ne aflăm (i);

Vom simula o structură repetitivă de tip for, astfel:

  • Dacă i ≤ n, atunci:
    • afișăm elementul curent (a[i]);
    • apelăm funcția pentru i + 1;
  • În caz contrar (i > n):
    • ne oprim.

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.

Implementare în C++

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;
}

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

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

© 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