Sunteți pe pagina 1din 4

Testul 1 1.

Precizai valorile de adevr ale afirmaiilor de mai jos: a) Orice subprogram recursiv trebuie sa aib cel puin un parametru transmis prin valoare b) Orice subprogram recursiv se poate implementa si nerecursiv c) Un subprogram este recursiv daca si numai daca conine mai mult de un apel autoapel d) Programul principal Pascal) sau funcia main !"") nu pot conine autoapel #: f$a$f$a %.&a fiecare apel recursiv al unui subprogram$ in segmentul de stiva sunt memorate a) 'dresa de revenire$ valorile variabilelor locale si a parametrilor transmi(i prin referin b) 'dresa de revenire si valorile variabilelor globale c) 'dresa de revenire$ valorile variabilelor locale si a parametrilor transmi(i prin valoare si adrese parametrilor transmi(i prin referina d) 'dresa de revenire$ valorile locale si a variabilelor globale #: c) ).*ie funcia recursiv functiona ael n:integer ):integer+ begin if n,- t.en ael:,else ael:,ael n/1 ) " %0n/1+ end+ int ael int n ) 1 if n , ,- ) return else return ael n/1)"%0n/1) 2

Precizai valoarea lui n pentru care ael n), )3 a) 4 b) ) c) 15 d) 3 #: d) 6. 7e consider subprogramul recursiv: procedure test n:integer)+ begin if n891 t.en begin :rite n$ ;$;)+ if n mod %) t.en test n div %) else test )0n"1)+ end else :rite 1)+ end+ Precizai ce va fi afi(at la apelul test 1-)@ void test int n ) 1 if n<,1 ) 1 cout88n88=$= if n>% , ,- ) test n?%) else test )0n"1) 2 else cout881+

a) b) c) d)

1-$5$6$%$1 1-$5$13$A$6$% 1-$5$13$A$6$%$1 5$13$A$6$%$1 #: c)

5. *ie funcia recursiva: function verif n$B: integer): integer+ begin if B,n ) t.en verif:,1 else if n mod B,-) t.en verif:,else verif:,verif n$ B"1)+ end+ int test int n$ int B) 1 if B, ,n) return 1+ else if n>B, ,- ) return -+ else return test n$ B"1) 2

&a apelul verif n$%) valoarea funciei este 1 dac (i numai dac: a) b) c) d)
n (i n este par n (i n este prim n (i n este impar n (i n nu este prim

#: b) 3. *ie (irul de numere definit astfel: m$ pentru n,- (i mC an 4 $ dac n este par 6 an/1$ dac n este impar

an,

!are este valoarea termenului a5 $ dac m,% @ a) b) c) d) e) 5 3 1% D % #: a) D. *ie urmtorul subprogram recursiv: procedure c b$a: :ord)+ begin if a8, b div %) t.en begin if not b mod a89-) t.en :rite a$; ;)+ c b$a"1)+ end+ end+ void c unsigned b$ unsigned a) 1 if a 8, b?%) 1 if < b>a, , -)) cout 88a88= E

c b$ a"1) 2 &a apelul c 15$%)$ se va afi(a: a) b) c) d) )515 %63D )5 1)5

#: c) A. 7e considera funcia s: F0 G F0 H F definit astfel &a apelul funciei s )$5) unde m,1 (i n,1 se va obine a) 1% b) 11 c) A d) 4 #: b) *ie programul urmtor: program T4+ var G$z:integer+ procedure t G:integer$ z:integer)+ begin if G9- t.en begin G:,G/1+ I:,I/1+ t G$I)+ end+ begin G,)+I,1+ :rite G$;;$I$;;)+ t G$I)+ :riteln G$; ;$I$; ;)+ end. J include 8iostream..9 int G$I+ void t int G$ int I) 1 if G9-) 1 G,G/1+ I,I/1+ t G$I)+ 2 2 void main ) 1 G,)+ I,1+ cout88G88= =88I88= =+ t G$I)+ cout88G88= =88I88= =88endl+ 2

!are este modificarea din program$ astfel KncLt dup eGecuia s se afi(eze ) 1 - 1 P'7!'& a) procedure t var G:integer+ I: integer)+ b) procedure t var G:integer+ var I: integer)+ c) procedure t G:integer+ var I: integer)+ !""

a) b) c)

void t int M G$ int I)+ void t int M G$ int M I)+ void t int G$ int M I)+ #: a)

S-ar putea să vă placă și