Pagina informaticii

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

Test grilă – recursivitate

1. (2 puncte) Scrie o funcţie recursivă care returnează oglinditul unui număr natural de maximum 9 cifre. De exemplu, pentru n = 123, funcţia va returna 321.

2. (1 punct) Fie următoarea funcţie recursivă:

float F(float x, int n)
{
 if (n<=2) return 2.0;
     else return 2*x + F(x-1,n-1);
}
Dacă se execută următoarea secvenţă de instrucţiuni:
cout<<F(3.0, 2)<<”  ”; cout<<F(3.0, 2)<<”  ”; cout<<F(3.0, 2)<<”  ”;

ce se va afişa :
a) 6  2  2
b) 2  8  8
c) 2  5  5
d) 1  7  7

3. (1 punct) Se consideră funcţia recursivă :

int F(int x)
{
 if (x==0) return 0;
    else if (x%3 == 0) return F(x/10)+1;
            else return F(x/10);
}

Pentru ce valoare a lui x funcţia F va returna valoarea 4 :
a) 13369       b) 21369       c) 4      d) 1233

4) (1 punct) Fie funcţia:
void S(int i, int j)
{
 if (i<=4) 
            if (j<=i) {cout<<”8”; S(i, j+1);}
    else {cout<<”\n”; S(i+1,1);}
}

Câte caractere vor fi afişate la apelul S(1,1) ?
a) 4          b) 16           c) 10         d) 8

5) (1 punct) Fie funcţia:

void S(int x, int b)
{
 if (x<b) cout<<x;
   else { S(x/b,b) ;  cout<<x%b; }
}
Ce se afişează în urma apelului S(305,4) ?

a) 10301        b) 103001        c) 131        d) 1220

6) (2 puncte) Scrie o funcţie recursivă optimă care calculează C(n,k) (combinări de n luate câte k). Se vor preciza mai întâi relaţiile de recurenţă.

7) (1 punct) Fie funcţia:
int an(int n)
{ if (n = = 0) return 1;
            else return 3*an(n-1) + 7
}
Dacă funcţia este apelată prin an(4), de câte ori se autoapelează?
a) 4 ori      b) 3 ori          c) 5 ori          d) o infinitate de ori            e) stiva se va umple de prea multe apeluri.

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 (1)
  • Avatar

    Lili 15-1-2015 11:1:46

    La grila 2, raspunsul corect este 2 2 2 si nu se regaseste printre variante!
    Va multumesc pentru materialele foarte utile de pe acest site.

Scrie un comentariu
Nume:

Comentariu:

15 + 10 =