You are on page 1of 10

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;

cin>>n>>a; cout<<puterea(a,n);}

Scrieti un program care utilizand o functie recursive calculeaza si returneaza suma cifrelor unui numar natural primit ca parametru.

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

#include<iostream.h> int prodcif(int n) {if(n==0) return 1; else return prodcif(n/10)*(n%10);} int main() {int n; cin>>n; 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.

#include<iostream.h> int sumacif(int n) {if(n==0) return 0; else if((n%10)%2==0) return sumacif(n/10)+(n%10); else return sumacif(n/10);} int main() {int n; cin>>n; cout<<sumacif(n); return 0;}

Scrieti un program care utilizand o functie recursive calculeaza si returneaza produsul cifrelor impare unui numar natural primit ca parametru.

#include<iostream.h> int prodimp(int n) {if(n==0) return 1; else if(n%2!=0) return prodimp(n/10)*(n%10); else return prodimp(n/10);} int main() {int n; cin>>n; cout<<prodimp(n); return 0;}
Sa se scrie o functie recursive care primeste un parametru n numar natural si returneaza numarul obtinut din n prin eliminarea cifrelor pare.

#include<iostream.h> long sterge(long n) {if(n==0) return 0; else if(n%2!=0) return sterge(n/10)*10+n%10; else return sterge(n/10);} int main() {int n; cin>>n; cout<<sterge(n); return 0;}

Scrieti un program care utilizand o functie recursive calculeaza CMMDC al doua numere natural.

#include<iostream.h> int cmmdc(int x,int y) {if(x%y==0) return y; else return cmmdc(y,x%y);} int main() {int a,b; cin>>a>>b; cout<<cmmdc(a,b);}
Scrieti un program care utilizand o functie recursiva determina cifra maxima a unui numar natural.

#inlcude<iostream.h> int max(int n) {if(n<10) return n; else {int m=0;

if(m<n%10) return m; else return (n%10);} int main() {int n, cin>>n; cout<<max(n);}
Scrieti un program care utilizand o functie recursiva calculeaza rasturnatul unui numar natural.

#include<iostream.h> int rast(int n,int k) {if(n==0) return k; else return rast(n/10,k+10+n%10);} int main() {int n; cin>>n; cout<<rast(n,0);}
Scrieti un program care utilizand o functie recurs. det prima cifra a unui nr nat

#include<iostream.h> int primcif(int n) {if(n<10) return n; else return primcif(n/10);} int main() {int n; cin>>n; cout<<primcif(n);}
Scrieti un program care utilizand o funt recurs care primind un parametru n numar natural afiseaza cifrele sale in ordinea din el, separate prin cate un spatiu.

#include<iostream.h> void afis(int n) {if(n>0) {afis(n/10); cout<<n%10<<" ";} } int main() {int n; cin>>n; afis(n);}

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.

#include<iostream.h> long modifica(long n) {if(n==0) return 0; else if(n%2==1) return modifica(n/10)*10+n%10-1; else return modifica(n/10)*10+n%10+1;} int main() {int n; cin>>n; cout<<modifica(n);}
Sa se citeasca sis a se afiseze elementele unui tablou unidimensional utulizand doua subprogram recursive.

#include<iostream.h> int a[20],i,n; void citire(int a[20],int i) {cin>>a[i]; if(i<n) citire(a,i+1);} void afisare(int a[20],int i) {cout<<a[i]<<" "; if(i<n) afisare(a,i+1);} int main() {cout<<"n=";cin>>n; citire(a,1); afisare(a,1);}
Se citeste un tablou unidimensional a cu n elemente numere natural. Sa se calculeze suma elementelor din tablou. Se va folosi o functie recursive pt citire si una recursive pt determinarea sumei.

#include<iostream.h> int a[20],i,n; void citire(int a[20],int i) {cin>>a[i]; if(i<n) citire(a,i+1);} void afisare(int a[20],int i) {cout<<a[i]<<" "; if(i<n) afisare(a,i+1);} int suma(int a[20],int n) {if(n==0) return 0; else return suma(a,n-1)+a[n];} int main() {cout<<"n=";cin>>n; citire(a,1); afisare(a,1);

cout<<endl<<"suma="<<suma(a,n);}
Se citeste un tablou unidimensional a cu n elemente numere natural. Sa se calculeze produsul elementelor pare din tablou. Se va folosi o functie recursiva petru citire si una recursive pt determinarea produsului

#include<iostream.h> int a[20],i,n; void citire(int a[20],int i) {cin>>a[i]; if(i<n) citire(a,i+1);} void afisare(int a[20],int i) {cout<<a[i]<<" "; if(i<n) afisare(a,i+1);} int prod(int a[20],int n) {if(n==0) return 1; else if(a[n]%2==0) return a[n]*prod(a,n-1); else return prod(a,n-1);} int main() {cin>>n; citire(a,1); cout<<"prod="<<prod(a,n);}
Se citeste un tablou unidimensional a cu n elemente intregi. Sa se determine nr elementelor negative din tablou. Se va folosi o functie recursive pt citire si una recursive pt numarare.

#include<iostream.h> int a[20],i,n; void citire(int a[20],int i) {cin>>a[i]; if(i<n) citire(a,i+1);} void afisare(int a[20],int i) {cout<<a[i]<<" "; if(i<n) afisare(a,i+1);} int nr(int a[20],int n) {if(n==0) return 0; else if(a[n]<0) return 1+nr(a,n-1); else return nr(a,n-1);} int main() {cin>>n; citire(a,1); afisare(a,1); cout<<endl<<"nr="<<nr(a,n);}
Se citeste un tablou unidimensional a cu n elemente numere natural. Sa se calculeze elemental maxim din tablou. Se va folosi o functie recursive pentru citire si una recursive pentru determinarea elementului maxim.

#include<iostream.h> int a[20],i,n,M; void citire(int a[20],int i) {cin>>a[i]; if(i<n) citire(a,i+1);} void afisare(int a[20],int i) {cout<<a[i]<<" "; if(i<n) afisare(a,i+1);} int max(int a[20],int n) {if(n==1) return a[1]; else {M<max(a,n-1); if(a[n]>M) return a[n]; else return M;}} int main() {cin>>n; citire(a,1); afisare(a,1); cout<<endl<<max(a,n);}
Se citeste un tablou unidimensional cu n elemente numere natural folosind o functie recursive . Sa se calculeze suma tuturor cifrelor din care sunt formate elementele tabloului folosind doar functii recursive.

#include<iostream.h> int a[20],i,n; void citire(int a[20],int i) {cin>>a[i]; if(i<n) citire(a,i+1);} void afisare(int a[20],int i) {cout<<a[i]<<" "; if(i<n) afisare(a,i+1);} int sumacif(int n) {if(n==0) return 0; else return n%10+sumacif(n/10);} int suma(int a[20], int n) {if(n==0) return 0; else return suma(a,n-1)+sumacif(a[n]);} int main() {cout<<n; citire(a,n); afisare(a,n); cout<<suma(a,n);}
Se citeste un tablou unidimensional a cu n elemente numere natural folosind o functie recursiva. Sa se calculeze recuriv de cate ori apare o valoare intreaga x in tablou.

#include<iostream.h>

int a[20],i,n; void citire(int a[20],int i) {cin>>a[i]; if(i<n) citire(a,i+1);} void afisare(int a[20],int i) {cout<<a[i]<<" "; if(i<n) afisare(a,i+1);} int apar(int n, int x) {if(n==0) return 0; else if(a[n]==x) return 1+apar(n-1,x); else return apar(n-1,x);} int main() {int n,x,a[20]; cin>>n; citire(a,1); afisare(a,1); cin>>x; cout<<apar(n,x);}
Se citeste un tablou unidimensional cu n elemente intregi folosind o functie recursive. Sa se verifice recursive daca exista cel putin un element negative in tablou.

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

#include<iostream.h> int a[20],i,n,aux;

void citire(int a[20],int i) {cin>>a[i]; if(i<n) citire(a,i+1);} void afisare(int a[20],int i) {cout<<a[i]<<" "; if(i<n) afisare(a,i+1);} void sortare(int a[20],int n) {if(n>1) {sortare(a,n-1); while(a[i]>a[i+1]&& i>1) {aux=a[i]; a[i]=a[i+1]; a[i+1]=aux; i--;}}} int main() {cin>>n; citire(a,1); afisare(a,1); sortare(a,n); afisare(a,1);}
Sa se scrie o functie recursive cu 2 parametri siruri de caractere care sa determine daca sunt anagrame.

#include<iostream.h> int anagrame(char a[20],char b[20]) {char *p; if(strlen(a)!=strlen(b)) return 0; else if(strcmp(a,b)==0) return 1; else if(strchr(b,a[0])==0) return 0; else {p=strchr(b,a[0]); strcpy(a,a+1); strcpy(p,p+1); return anagrame(a,b);}} int main() {char a[20],b[20]; cin>>a>>b; if(anagrame(a,b)==1) cout<<"anagrame"; else cout<<"nu";}
Sa se scrie o functie recursive care primeste ca parametru litera A si afiseaza in ordine toate literele mari din alphabet.

#include<iostream.h> void litere(char c) {if(c<='Z') {cout<<c<<" ";

litere(c+1);} } int main() { litere('A'); }


Se citeste un cuvant si o litera. Sa se scrie o functie recursive care sa stearga toate aparitiile literei in cuvant

#include<iostream.h> void sterge(char s[20],char c) {char *p; p=strchr(s,c); if(p) {strcpy(p,p+1); sterge(s,c);}} int main() {char s[20],c; cout<<"cuvantul:";cin>>s; cout<<"caracterul:";cin>>c; sterge(s,c); cout<<s;}
Sa se scrie o functie recursive care verifica daca un cuvant este palindrom.

#inlcude<iostream.h> int palindrom(char c[20]) {if(strchr(c)<1) return 1; else if(c[0]!=c[strlen(c)-1]) return 0; else {strcp(c,c+1); c[strlen(c)-1]=0; return palindrom(c);}} int main() {char c[20]; cout<<"cuvantul:";cin>>c; if(palindrom(c)==1 cout<<"palindrom"; else cout<<"nu e palindrom";}

You might also like