Pagina informaticii

Teste de informatică pentru liceu, articole C#, C/C++, PHP

Test de progres – Funcţii recursive

1. Scrieţi funcţia recursivă care calculează suma: a

S = 1^2 + 2^2 + ... + n^2
Antet: int S(int n)

2. Scrieţi o funcţie recursivă care afişează la ecran triunghiul:

1
1 2
1 2 3
1 2 3 4
.............
1 2 3 4 ... n
Funcţia va avea antetul: void Scrie(int n) pentru apel de forma: Scrie(4)

3. Scrieţi o funcţie recursivă care primeşte ca parametru un întreg n, returnează prin intermediul parametrului max cifra maximă a lui n.
Antet: void CifMax(int n, int & max) pentru apel de forma: CifMax(2461,max)

4. Scrieţi o funcţie recursivă care citeşte de la tastatură elementele unui vector de lungime exact 20. Vectorul este a şi este considerat ca fiind declarat global.
Antet: void Citeste(int i) pentru apel de forma: Citeste(0)

5. Fie funcţia
int f(int a, int b)
{
  if (a >= b) return f(a – b , b) + 1 ;
else return 0 ;
}
Ce face funcţia? Scrieţi o funcţie nerecursivă echivalentă.

Notă: Se acordă două puncte din oficiu. Fiecare subiect este notat cu 2 puncte. Orice punctaj mai mare sau egal cu 10 puncte echivalează cu nota 10.

Despre autor
Author

Dan Pracsiu deţinător www.dponline.ro
Profesor, Liceul Teoretic "Emil Racoviță" Vaslui
Membru în Comisia Naţională a Olimpiadelor de Informatică
Pasiuni: istoria, călătoriile, fotografia, muzica clasică

Comentarii (3)
  • Avatar

    ioana 3-12-2012 9:53:1

    vreau rezolvarea la 2

  • Avatar

    Cam_asha 4-12-2012 15:30:55

    #include<iostream>
    using namespace std;
    void Afis(int i, int n)
    {
    if (i <= n)
    {
    for (int j = 1; j <= i; j++)
    cout << j << " ";
    cout << "\n";
    Afis(i + 1, n);
    }
    }
    int main()
    {
    Afis(1,5);
    return 0;
    }

  • Avatar

    Dan 14-1-2014 20:59:0

    #include<iostream>

    using namespace std;
    int s;
    void Scrie(int n)
    {
    int i;
    if (n == 0) return;
    Scrie(n - 1);
    for (i = 1; i <= n; i++)
    { cout << i;
    }
    cout << endl;
    }

    int main()
    {
    int n;
    cin >> n;
    Scrie(n);
    return 0;
    }

Scrie un comentariu
Nume:

Comentariu:

15 + 10 =