# Realizati un program care sa se calculeze recursive suma: 1*3+2*5+3*7+…+n(2n+1) #include<iostream.

h> int suma(int n) {if(n==0) return 0; else return suma(n-1)+n*(2*n+1);} int main() {int n; cin>>n; cout<<suma(n);}

sa se calculeze factorialul unui numar n: n!=1*2*3*…*n. #include<iostream.h> int fact(int n) {int i,f=1; for(i=1;i<=n;i++) f=f*i; return f;} int main() {int n; cout<<"n=";cin>>n; cout<<"n!="<<fact(n); return 0;}

Sa se calculeze recursive suma:1*2+2*3+3*4+…+n(n+1). #include<iostream.h> int s(int k) { if(k==0) return 0; else return k*(k+1)+s(k-1);} int main () {int n; cout<<"n=";cin>>n; cout<<s(n)<<endl; return 0;}

Scrieti un program care utilizand un subprogram recursiv calculeaza a la puterea n. #include<iostream.h> int puterea(int a, int n) {if(n==0) return 1; else return puterea(a,n-1)*a;} int main() {int n,a;

#include<iostream. cout<<puterea(a.n). cin>>n.} .h> int sumacif(int n) {if(n==0) return 0. else return prodcif(n/10)*(n%10). return 0.} Scrieti un program care utilizand o functie recursiva calculeaza si returneaza produsul cifrelor unui numar natural primit ca parametru. return 0. cout<<prodcif(n). return 0.} Scrieti un program care utilizand o functie recursiva calculeaza si returneaza suma cifrelor pare unui numar natural primit ca parametru. cout<<"x=". #include<iostream.h> int sumacif(long n) {if(n==0) return 0.h> int prodcif(int n) {if(n==0) return 1.} int main() {int n. else return sumacif(n/10)+n%10.} Scrieti un program care utilizand o functie recursive calculeaza si returneaza suma cifrelor unui numar natural primit ca parametru.cin>>n>>a. else if((n%10)%2==0) return sumacif(n/10)+(n%10). cin>>n. cout<<sumacif(n).} int main() {int n.} int main() {int x.cin>>x. cout<<sumacif(x). else return sumacif(n/10). #include<iostream.

} int main() {int n. else if(n%2!=0) return sterge(n/10)*10+n%10.} Scrieti un program care utilizand o functie recursive calculeaza CMMDC al doua numere natural.h> int prodimp(int n) {if(n==0) return 1.int y) {if(x%y==0) return y. cin>>n. return 0. #include<iostream. cout<<prodimp(n).x%y). cout<<cmmdc(a. #include<iostream. else {int m=0.h> long sterge(long n) {if(n==0) return 0.Scrieti un program care utilizand o functie recursive calculeaza si returneaza produsul cifrelor impare unui numar natural primit ca parametru.b). else return cmmdc(y. return 0.h> int cmmdc(int x.b. #inlcude<iostream. else return sterge(n/10).} Sa se scrie o functie recursive care primeste un parametru n numar natural si returneaza numarul obtinut din n prin eliminarea cifrelor pare.} Scrieti un program care utilizand o functie recursiva determina cifra maxima a unui numar natural. cin>>n. . else if(n%2!=0) return prodimp(n/10)*(n%10).} int main() {int a. cout<<sterge(n).} int main() {int n. cin>>a>>b.h> int max(int n) {if(n<10) return n. #include<iostream. else return prodimp(n/10).

separate prin cate un spatiu.h> int rast(int n. det prima cifra a unui nr nat #include<iostream. afis(n). cin>>n.} Scrieti un program care utilizand o functie recurs.} int main() {int n.} int main() {int n. cin>>n.h> void afis(int n) {if(n>0) {afis(n/10). #include<iostream.} . cin>>n.} Scrieti un program care utilizand o funt recurs care primind un parametru n numar natural afiseaza cifrele sale in ordinea din el. else return primcif(n/10). #include<iostream. else return rast(n/10. else return (n%10). cout<<n%10<<" ". cin>>n. cout<<primcif(n).h> int primcif(int n) {if(n<10) return n.} Scrieti un program care utilizand o functie recursiva calculeaza rasturnatul unui numar natural.} int main() {int n.int k) {if(n==0) return k.} } int main() {int n. cout<<max(n).k+10+n%10). cout<<rast(n.if(m<n%10) return m.0).

n-1)+a[n].int i) {cin>>a[i]. if(i<n) citire(a. #include<iostream.1).} int main() {int n.cin>>n.i+1). citire(a.Sa se scrie o funct recurs care primeste un parametru n numar natural si returneaza numar obt din n prin scaderea cu 1 a cifrelor impare si marirea cu a a celor pare. void citire(int a[20].cin>>n.i+1).h> int a[20].h> long modifica(long n) {if(n==0) return 0.} void afisare(int a[20].i+1).} void afisare(int a[20]. afisare(a. cin>>n. void citire(int a[20]. if(i<n) citire(a.} int main() {cout<<"n=".n.int i) {cin>>a[i].} Se citeste un tablou unidimensional a cu n elemente numere natural.i. if(i<n) afisare(a.int i) {cout<<a[i]<<" ". Sa se calculeze suma elementelor din tablou. if(i<n) afisare(a. citire(a.} int main() {cout<<"n=". #include<iostream.} int suma(int a[20].i+1). afisare(a.1).int i) {cout<<a[i]<<" ". Se va folosi o functie recursive pt citire si una recursive pt determinarea sumei.int n) {if(n==0) return 0.i.h> int a[20]. cout<<modifica(n). #include<iostream.} Sa se citeasca sis a se afiseze elementele unui tablou unidimensional utulizand doua subprogram recursive. else return suma(a. .n. else return modifica(n/10)*10+n%10+1.1). else if(n%2==1) return modifica(n/10)*10+n%10-1.1).

} int main() {cin>>n.int i) {cout<<a[i]<<" ".int i) {cout<<a[i]<<" ".1).} Se citeste un tablou unidimensional a cu n elemente numere natural. Sa se calculeze produsul elementelor pare din tablou.n-1).} int nr(int a[20].} int prod(int a[20].h> int a[20]. else return nr(a. citire(a.i. #include<iostream. if(i<n) citire(a.i+1).1).} Se citeste un tablou unidimensional a cu n elemente intregi. cout<<"prod="<<prod(a. Sa se determine nr elementelor negative din tablou.n.n-1). else if(a[n]%2==0) return a[n]*prod(a.n). . Se va folosi o functie recursiva petru citire si una recursive pt determinarea produsului #include<iostream. else return prod(a.int n) {if(n==0) return 0.n.} Se citeste un tablou unidimensional a cu n elemente numere natural. else if(a[n]<0) return 1+nr(a.} void afisare(int a[20].cout<<endl<<"suma="<<suma(a.n-1).1). if(i<n) afisare(a.int i) {cin>>a[i].i+1).int i) {cin>>a[i]. if(i<n) citire(a. if(i<n) afisare(a. Se va folosi o functie recursive pt citire si una recursive pt numarare. void citire(int a[20].} void afisare(int a[20]. Sa se calculeze elemental maxim din tablou.int n) {if(n==0) return 1.} int main() {cin>>n.n-1).h> int a[20].n). Se va folosi o functie recursive pentru citire si una recursive pentru determinarea elementului maxim. cout<<endl<<"nr="<<nr(a.i+1).i. void citire(int a[20]. citire(a.i+1). afisare(a.n).

n). citire(a. cout<<suma(a.} void afisare(int a[20]. int n) {if(n==0) return 0.i+1). if(a[n]>M) return a[n].}} int main() {cin>>n. Sa se calculeze recuriv de cate ori apare o valoare intreaga x in tablou.} void afisare(int a[20]. afisare(a. #include<iostream.n).n).i+1).} Se citeste un tablou unidimensional cu n elemente numere natural folosind o functie recursive .n. if(i<n) afisare(a. void citire(int a[20]. if(i<n) citire(a.n).n-1)+sumacif(a[n]).M.i.#include<iostream.int i) {cin>>a[i]. #include<iostream.} Se citeste un tablou unidimensional a cu n elemente numere natural folosind o functie recursiva.i+1). else return n%10+sumacif(n/10).} int suma(int a[20].} int sumacif(int n) {if(n==0) return 0.h> int a[20].n-1).i+1).h> int a[20]. citire(a.int i) {cout<<a[i]<<" ".int n) {if(n==1) return a[1]. cout<<endl<<max(a. else return suma(a. if(i<n) afisare(a.1).n.} int max(int a[20]. void citire(int a[20].i. else {M<max(a.} int main() {cout<<n. if(i<n) citire(a. else return M. afisare(a. Sa se calculeze suma tuturor cifrelor din care sunt formate elementele tabloului folosind doar functii recursive.int i) {cout<<a[i]<<" ".1).h> .int i) {cin>>a[i].

else return neg(n-1. cin>>n.aux. citire(a. if(neg(a.} Se citeste un tablou unidimensional cu n elemente intregi folosind o functie recursive.int i) {cout<<a[i]<<" ". Sa se sorteze crescator elementele tabloului folosind o functie recursive. int x) {if(n==0) return 0.h> int a[20].int i) {cout<<a[i]<<" ". else return apar(n-1.x).} int main() {cin>>n.int a[20].n. else if(a[n]==x) return 1+apar(n-1.} int neg(int a[20].1). Sa se verifice recursive daca exista cel putin un element negative in tablou.1). cin>>x. void citire(int a[20].a). citire(a.n)>=1) cout<<"Da".} int main() {int n.i+1). else cout<<"Nu". if(i<n) afisare(a. cout<<apar(n.} void afisare(int a[20]. .} int apar(int n.h> int a[20]. if(i<n) afisare(a.x).i+1).} Se citeste un tablou unidimensional cu n elemente intregi folosind o functie recursive.int n) {if(n==0) return 0. if(i<n) citire(a. if(i<n) citire(a.n. afisare(a.i+1). #include<iostream.a)+1.x).int i) {cin>>a[i].i+1).1). afisare(a.a[20].int i) {cin>>a[i]. #include<iostream.x. void citire(int a[20]. else if(a[n]<0) return neg(n-1.n.i.i.} void afisare(int a[20].1).i.

a[i+1]=aux. else cout<<"nu".int n) {if(n>1) {sortare(a.h> void litere(char c) {if(c<='Z') {cout<<c<<" ". a[i]=a[i+1]. strcpy(p.1). else {p=strchr(b. #include<iostream.a[0]).}}} int main() {cin>>n.b). i--.} void afisare(int a[20].i+1). return anagrame(a. .}} int main() {char a[20].a+1). cin>>a>>b.int i) {cin>>a[i].a[0])==0) return 0. afisare(a. else if(strcmp(a. strcpy(a.} Sa se scrie o functie recursive cu 2 parametri siruri de caractere care sa determine daca sunt anagrame.b)==1) cout<<"anagrame".int i) {cout<<a[i]<<" ".b[20].} void sortare(int a[20]. if(i<n) citire(a.i+1). if(i<n) afisare(a. while(a[i]>a[i+1]&& i>1) {aux=a[i]. if(strlen(a)!=strlen(b)) return 0. afisare(a.1). if(anagrame(a. else if(strchr(b.n-1). citire(a. #include<iostream.1).} Sa se scrie o functie recursive care primeste ca parametru litera A si afiseaza in ordine toate literele mari din alphabet. sortare(a.b)==0) return 1.p+1).char b[20]) {char *p.void citire(int a[20].h> int anagrame(char a[20].n).

c[strlen(c)-1]=0.cin>>s.c).cin>>c. return palindrom(c). sterge(s. cout<<"cuvantul:".h> int palindrom(char c[20]) {if(strchr(c)<1) return 1.} } int main() { litere('A').}} int main() {char s[20]. else {strcp(c.char c) {char *p.p+1). cout<<"caracterul:". cout<<s.} Sa se scrie o functie recursive care verifica daca un cuvant este palindrom.cin>>c.h> void sterge(char s[20].c. cout<<"cuvantul:". if(palindrom(c)==1 cout<<"palindrom". } Se citeste un cuvant si o litera.} .c). Sa se scrie o functie recursive care sa stearga toate aparitiile literei in cuvant #include<iostream. else if(c[0]!=c[strlen(c)-1]) return 0.c+1). p=strchr(s.}} int main() {char c[20]. if(p) {strcpy(p.c).litere(c+1). sterge(s. else cout<<"nu e palindrom". #inlcude<iostream.